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{
//申请权限被拒绝
}
}
}

运行效果如下

android 振动器权限 应用振动权限_android 振动器权限

普通权限列表

权限名称

权限作用

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