Android权限申请
权限
详细的权限文档请参考:Android 权限文档
权限的申请方式
1. 动态申请
动态申请需要在代码中调用ActivityCompat.requestPermissions
方法,该方法有三个参数:Context上下文
,要申请的权限
,请求码
申请SD卡写权限示例:
ActivityCompat.requestPermissions(MainActivity.this, new String[] {"android.permission.WRITE_EXTERNAL_STORAGE"}, 1);
2. 静态申请
在AndroidManifest.xml
的<manifest>
标签中使用<uses-permission>
标签来实现静态获取权限。
需要注意的是,在Android6.0以后,Android修改了权限申请机制,其将权限分为了正常权限
和危险权限
两大类。
申请危险权限时不仅要在AndroidManifest.xml
中静态申请权限,还要在代码里动态申请权限。
2.1 正常权限:
不会直接给用户带来隐私风险的权限,如请求网络
的权限。
2.2 危险权限:
涉及用户隐私的权限。申请该权限的应用程序,可能涉及用户隐私信息的数据或资源,也可能对用户存储的数据或其他应用程序的操作产生影响。
危险权限一共有九组:
- 位置(LOCATION)
- 日历(CALENDAR)
- 照相机(CAMERA)
- 联系人(CONTACTS)
- 存储卡(STORAGE)
- 传感器(SENSORS)
- 麦克风(MICROPHONE)
- 电话(PHONE)
- 短信(SMS)
静态权限申请示例:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mkirin.musicplayer">
<!-- 外部存储写权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 通讯录读权限-->
<uses-permission android:name="android.permission.READ_CONTACTS" />
</manifest>