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
















