Android6.0 权限变化很大,将权限分为普通权限和危险权限
对于普通权限,直接在 Manifest 文件中的声明可以使用;对于危险权限,除了Manifest 除了文件中的声明外,还需要在使用权限的地方进行检查 APP 是否有权限,如果没有申请
以阅读手机上的照片为例
首先在Manifest 以下配置添加到文件中
其次,在需要的地方进行权限判断和申请
//CameraDemoActivity 是activity的名字
if (ContextCompat.checkSelfPermission(CameraDemoActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE ) == PackageManager.PERMISSION_GRANTED){
//有权限的情况
}else{
///无权申请权限
//REQ是本请求的识别号,即 requestCode
ActivityCompat.requestPermissions(CameraDemoActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQ);
}
注:在上述代码中CameraDemoActivity 是 Activity 的名字;REQ是本请求的识别号,即 requestCode。这两个要转化为自己的项目 Activity 和requestCode
申请权限后,将处理回调函数,即 Activity 中重写 onRequestPermissionsResult 方法
/***
* 申请权限后的回调函数
* @param requestCode
* @param permissions
* @param grantResults
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQ){
if (grantResults[0] == PackageManager.PERMISSION_GRANTED){
//申请权限成功
}else{
///拒绝申请权限
}
}
}
操作效果如下
普通权限列表
权限名称
权限作用
ACCESS_LOCATION_EXTRA_COMMANDS
允许应用程序访问额外位置提供命令
ACCESS_NETWORK_STATE
允许程序访问GSM网络信息
ACCESS_NOTIFICATION_POLICY
允许app状态栏显示通知
ACCESS_WIFI_STATE
允许程序访问Wi-Fi网络状态信息
BLUETOOTH
允许程序连接到匹配的蓝牙设备
BLUETOOTH_ADMIN
允许程序发现和匹配蓝牙设备
BROADCAST_STICKY
允许程序广播通常使用intents
CHANGE_NETWORK_STATE
允许程序改变网络连接状态
CHANGE_WIFI_MULTICAST_STATE
打开组播功能
CHANGE_WIFI_STATE
允许程序改变Wi-Fi连接状态
DISABLE_KEYGUARD
EXPAND_STATUS_BAR
状态栏允许程序扩展和收缩
GET_PACKAGE_SIZE
允许获得任何程序package占用空间容量
INSTALL_SHORTCUT
允许在手机桌面上添加快捷方法
INTERNET
允许程序打开网络套接字
KILL_BACKGROUND_PROCESSES
允许杀死过程
MODIFY_AUDIO_SETTINGS
允许程序修改全局音频设置
NFC
允许使用NFC
READ_SYNC_SETTINGS
允许程序读取同步设置
READ_SYNC_STATS
允许程序读取同步状态
WRITE_SYNC_SETTINGS
允许程序写入同步设置
WAKE_LOCK
允许使用PowerManager的 WakeLocks保持过程从屏幕上消失
VIBRATE
振动设备允许访问
USE_FINGERPRINT
允许使用指纹识别
UNINSTALL_SHORTCUT
允许快速卸载
TRANSMIT_IR
红外发射器允许使用设备
SET_WALLPAPER_HINTS
允许程序设置壁纸hits
SET_WALLPAPER
允许程序设置壁纸
SET_TIME_ZONE
允许程序设置时间区域
SET_ALARM
允许程序设置闹钟提醒
REQUEST_INSTALL_PACKAGES
允许未知的应用安装权限允许允许未知的应用安装权限
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
允许加入白名单(休眠和待机)
REORDER_TASKS
允许程序改变Z轴排列任务
RECEIVE_BOOT_COMPLETED
允许程序接收
危险权限清单
权限名称
分类
作用
RECORD_AUDIO
MICROPHONE
BODY_SENSORS
SENSORS
ACCESS_COARSE_LOCATION
LOCATION
位置
ACCESS_FINE_LOCATION
CAMERA
CAMERA
WRITE_CALENDAR
CALENDAR
日历
READ_CALENDAR
PROCESS_OUTGOING_CALLS
PHONE
手机
USE_SIP
ADD_VOICEMAIL
WRITE_CALL_LOG
READ_CALL_LOG
CALL_PHONE
READ_PHONE_STATE
GET_ACCOUNTS
CONTACTS
联系人
WRITE_CONTACTS
READ_CONTACTS
WRITE_EXTERNAL_STORAGE
STORAGE
READ_EXTERNAL_STORAGE
RECEIVE_MMS
SMS
短信
RECEIVE_WAP_PUSH
READ_SMS
RECEIVE_SMS
SEND
参考文档:
https://www.jianshu.com/p/b4a8b3d4f587
https://www.cnblogs.com/guanmanman/p/6197148.html
https://www.jianshu.com/p/31cf0cd9cbd1
https://www.jianshu.com/p/8e37e9cf20a5
https://www.nblogs.com/kondoh/archive/2012/04/20/2459784.html
https://blog.csdn.net/xiaorenwu1206/article/details/49358433
https://blog.csdn.net/u014133119/article/details/80652188