Android的运行时权限

一般权限

http://www.bejson.com/doc/AndroidManifest/

运行时权限

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
group:android.permission-group.CONTACTS
permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS
permission:android.permission.READ_CONTACTS
group:android.permission-group.PHONE
permission:android.permission.READ_CALL_LOG
permission:android.permission.ANSWER_PHONE_CALLS
permission:android.permission.READ_PHONE_NUMBERS
permission:android.permission.READ_PHONE_STATE
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS
permission:com.android.voicemail.permission.ADD_VOICEMAIL
group:android.permission-group.CALENDAR
permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDAR
group:android.permission-group.CAMERA
permission:android.permission.CAMERA
group:android.permission-group.SENSORS
permission:android.permission.BODY_SENSORS
group:android.permission-group.LOCATION
permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATION
group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE
group:com.sina.weibo.permission-group
permission:com.sina.weibo.permission.USER
group:android.permission-group.MICROPHONE
permission:android.permission.RECORD_AUDIO
group:com.gsma.services.nfc.permission
group:android.permission-group.SMS
permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS

简单封装

PermissionUtils.java

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
public class PermissionUtils {
public static final int PERMISSION_REQUEST_CODE = 0;
private String[] permissions;
private Activity activity;
public PermissionUtils( Activity activity) {
this.activity = activity;
}
/**
* 检查权限
* @param permissions
* @return
*/
public boolean checkPermissions(String[] permissions) {
this.permissions=permissions;
for (String permission : permissions) {
if (checkPermission(permission)) {
return true;
}
}
return false;
}
/**
* 检查权限是否全部申请成功onRequestPermissionsResult使用
* @param grantResults
* @return
*/
public boolean checkAllPermissionsGranted(@NonNull int[] grantResults) {
for (int grantResult : grantResults) {
if (grantResult == PackageManager.PERMISSION_DENIED) {
return false;
}
}
return true;
}
private boolean checkPermission(String permission) {
return ContextCompat.checkSelfPermission(activity.getApplication(), permission) == PackageManager.PERMISSION_DENIED;//PackageManager.PERMISSION_GRANTED 是不需要授权
}
/**
* 请求权限
*/
public void requestPermissions() {
ActivityCompat.requestPermissions(activity, permissions, PERMISSION_REQUEST_CODE);
}
}

使用

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
PermissionUtils permissionUtils;
static final String[] PERMISSIONS = new String[]{
Manifest.permission.CAMERA,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO
};
......
.....
permissionUtils=new PermissionUtils(this);
if(permissionUtils.checkPermissions(PERMISSIONS)){
permissionUtils.requestPermissions();
}else {
//通过权限的操作
}
....
.....
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case PermissionUtils.PERMISSION_REQUEST_CODE:
if (permissionUtils.checkAllPermissionsGranted(grantResults)) {
//通过权限的操作
} else {
// 权限拒绝后的提示
ToastUtils.showToast(this,"没有权限");
}
break;
}
}

Powered By Valine
v1.5.2