package com.secondworld.sdk; import android.app.Activity; import android.content.pm.PackageManager; import androidx.annotation.NonNull; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.core.content.PermissionChecker; import com.secondworld.sdk.utils.CallBackState; import com.secondworld.sdk.utils.CodeA2U; import com.secondworld.sdk.utils.LogUtil; import com.secondworld.sdk.utils.RequestCode; import com.soha.sdk.SohaSDK; import com.soha.sdk.permission.GrantPermissions; import java.util.HashMap; import java.util.Map; /** * 权限管理 */ public class PermissionManager { public static PermissionManager I = new PermissionManager(); /** * 查询是否有权限 */ public boolean hasPermission(String permission) { return ContextCompat.checkSelfPermission(GameAppProxy.app, permission) == PackageManager.PERMISSION_GRANTED && PermissionChecker.checkSelfPermission(GameAppProxy.app, permission) == PermissionChecker.PERMISSION_GRANTED; } /** * 请求权限 */ public void requestPermissions(String permission) { if (GameActivityProxy.I == null || GameActivityProxy.I.activity == null) return; //ActivityCompat.requestPermissions(GameActivityProxy.I.activity, new String[]{permission}, RequestCode.UNITY); SohaSDK.getInstance().requestPermission(new String[]{permission}, new GrantPermissions() { @Override public void doAction() { } }); } public void onRequestPermissionsResult(Activity activity, int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (activity == null || permissions.length == 0 || requestCode != RequestCode.UNITY) return; Map map = new HashMap<>(); map.put("permission", permissions[0]); if (hasPermission(permissions[0])) { map.put("state", CallBackState.Success); } else { if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permissions[0])) {//用户拒绝,未勾选【不再提示】 map.put("state", CallBackState.Cancel); } else {//用户拒绝且勾选了【不再提示】 map.put("state", CallBackState.Error); } } UnityMsgHandler.sendMessageToUnity(CodeA2U.PermissionCallBack, map); LogUtil.i("onRequestPermissionsResult", permissions[0]); } }