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>