package com.secondworld.sdk;
|
|
import android.app.Activity;
|
import android.content.pm.PackageManager;
|
|
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 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);
|
|
}
|
|
|
public void onRequestPermissionsResult(Activity activity, int requestCode, String[] permissions, int[] grantResults) {
|
if (activity == null || permissions.length == 0 || requestCode != RequestCode.UNITY)
|
return;
|
Map<String, Object> 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]);
|
}
|
|
}
|