hch
3 天以前 9b0c5d57c355718c0c5d0a5c493b30426188573a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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]);
    }
 
}