Fork me on GitHub

android动态权限申请问题

android sdk>=23的时候要动态申请权限

代码为

1
2
3
4
5
6
7
private void initPermission() {
int permission = ContextCompat.checkSelfPermission(this,Manifest.permission.CAMERA);
if (permission!=PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA},1);
}
Log.d(TAG,"执行了权限初始化");
}

在oncreat()里面调用initPermission()

注意,联网请求不需要动态申请权限

具体的权限分组情况如下表:

以下权限使用时需要动态申请

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
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.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:android.permission-group.MICROPHONE

permission:android.permission.RECORD_AUDIO

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

普通权限:这些只是普通权限,我们开发的时候,正常使用就行了,需要的权限在清单文件配置即可。

普通权限的总结:

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
ACCESS_LOCATION_EXTRA_COMMANDS //定位权限

ACCESS_NETWORK_STATE //网络状态权限

ACCESS_NOTIFICATION_POLICY //通知 APP通知显示在状态栏

ACCESS_WIFI_STATE WiFi //状态权限

BLUETOOTH //使用蓝牙权限

BLUETOOTH_ADMIN //控制蓝牙开关

BROADCAST_STICKY //粘性广播

CHANGE_NETWORK_STATE //改变网络状态

CHANGE_WIFI_MULTICAST_STATE //改变WiFi多播状态,应该是控制手机热点(猜测)

CHANGE_WIFI_STATE //控制WiFi开关,改变WiFi状态

DISABLE_KEYGUARD //改变键盘为不可用

EXPAND_STATUS_BAR //扩展bar的状态

GET_PACKAGE_SIZE //获取应用安装包大小

INTERNET //网络权限

KILL_BACKGROUND_PROCESSES //杀死后台进程

MODIFY_AUDIO_SETTINGS //改变音频输出设置

NFC //支付

READ_SYNC_SETTINGS //获取手机设置信息

READ_SYNC_STATS //数据统计

RECEIVE_BOOT_COMPLETED //监听启动广播

REORDER_TASKS //创建新栈

REQUEST_INSTALL_PACKAGES //安装应用程序

SET_TIME_ZONE //允许应用程序设置系统时间区域

SET_WALLPAPER //设置壁纸

SET_WALLPAPER_HINTS //设置壁纸上的提示信息,个性化语言

TRANSMIT_IR //红外发射

USE_FINGERPRINT //指纹识别

VIBRATE //震动

WAKE_LOCK //锁屏

WRITE_SYNC_SETTINGS //改变设置

SET_ALARM //设置警告提示

INSTALL_SHORTCUT //创建快捷方式

UNINSTALL_SHORTCUT //删除快捷方式

此外还有类似于easypermissions这样的第三方动态权限申请库,过两天再整理

-------------本文结束感谢阅读-------------