PermissionUtil.java
5.17 KB
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package com.hjx.personalcenter.util;
import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.util.SimpleArrayMap;
import android.util.Log;
/**
* Created by yf on 2016/7/22 0022.
*/
public class PermissionUtil {
public static final int REQUEST_SHOWCAMERA = 0;
public static final int READ_PHONE_STATE = 1;
public static final int REQUEST_RECORD_AUDIO = 2;
public static final int REQUEST_CONTACTS = 3;
public static final int REQUEST_LOCATION = 4;
private static final SimpleArrayMap<String, Integer> MIN_SDK_PERMISSIONS;
static {
MIN_SDK_PERMISSIONS = new SimpleArrayMap<>(8);
MIN_SDK_PERMISSIONS.put("com.android.voicemail.permission.ADD_VOICEMAIL", 14);
MIN_SDK_PERMISSIONS.put("android.permission.BODY_SENSORS", 20);
MIN_SDK_PERMISSIONS.put("android.permission.READ_CALL_LOG", 16);
MIN_SDK_PERMISSIONS.put("android.permission.READ_EXTERNAL_STORAGE", 16);
MIN_SDK_PERMISSIONS.put("android.permission.USE_SIP", 9);
MIN_SDK_PERMISSIONS.put("android.permission.WRITE_CALL_LOG", 16);
MIN_SDK_PERMISSIONS.put("android.permission.SYSTEM_ALERT_WINDOW", 23);
MIN_SDK_PERMISSIONS.put("android.permission.WRITE_SETTINGS", 23);
MIN_SDK_PERMISSIONS.put("android.permission.READ_PHONE_STATE", 23);
}
private static boolean permissionExists(String permission) {
Integer minVersion = MIN_SDK_PERMISSIONS.get(permission);
return minVersion == null || Build.VERSION.SDK_INT >= minVersion;
}
public static boolean hasCameraPermission(Activity activity){
int hasPermission = ContextCompat.checkSelfPermission(activity,
Manifest.permission.CAMERA);
if(!permissionExists(Manifest.permission.CAMERA)){
Log.e("permission","your system does not suppport"+ Manifest.permission.CAMERA+" permission");
return false;
}
if (hasPermission != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity,
new String[]{Manifest.permission.CAMERA},
PermissionUtil.REQUEST_SHOWCAMERA);
return false;
}
return true;
}
public static boolean hasReadExternalStoragePermission(Activity activity){
int hasPermission = ContextCompat.checkSelfPermission(activity,
Manifest.permission.READ_PHONE_STATE);
if(!permissionExists(Manifest.permission.READ_PHONE_STATE)){
Log.e("permission","your system does not suppport "+ Manifest.permission.READ_PHONE_STATE+" permission");
return false;
}
if (hasPermission != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity,
new String[]{Manifest.permission.READ_PHONE_STATE},
PermissionUtil.READ_PHONE_STATE);
return false;
}
return true;
}
public static boolean hasRecordAudioPermission(Activity activity){
int hasPermission = ContextCompat.checkSelfPermission(activity,
Manifest.permission.RECORD_AUDIO);
if(!permissionExists(Manifest.permission.RECORD_AUDIO)){
Log.e("permission","your system does not suppport"+ Manifest.permission.RECORD_AUDIO+" permission");
return false;
}
if (hasPermission != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity,
new String[]{Manifest.permission.RECORD_AUDIO},
PermissionUtil.REQUEST_RECORD_AUDIO);
return false;
}
return true;
}
public static boolean hasContactsPermission(Activity activity){
int hasWPermission = ContextCompat.checkSelfPermission(activity,
Manifest.permission.WRITE_CONTACTS);
int hasRPermission = ContextCompat.checkSelfPermission(activity,
Manifest.permission.READ_CONTACTS);
if(hasRPermission== PackageManager.PERMISSION_GRANTED && hasWPermission== PackageManager.PERMISSION_GRANTED){
return true;
}
ActivityCompat.requestPermissions(activity,
new String[]{Manifest.permission.WRITE_CONTACTS, Manifest.permission.READ_CONTACTS},
PermissionUtil.REQUEST_CONTACTS);
return false;
}
public static boolean hasLocationPermission(Activity activity){
int hasFPermission = ContextCompat.checkSelfPermission(activity,
Manifest.permission.ACCESS_FINE_LOCATION);
int hasCPermission = ContextCompat.checkSelfPermission(activity,
Manifest.permission.ACCESS_COARSE_LOCATION);
if(hasFPermission== PackageManager.PERMISSION_GRANTED&&hasCPermission== PackageManager.PERMISSION_GRANTED){
return true;
}
ActivityCompat.requestPermissions(activity,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},
PermissionUtil.REQUEST_LOCATION);
return false;
}
}