AndroidManifest中定义的权限分为普通权限,危险权限和特殊权限。
- 普通权限指的是不会威胁到用户的安全和隐私的权限,只需要在AndroidManifest中声明一下就能直接使用。
- 危险权限指的是可能会触及用户隐私或者对设备安全性造成影响的权限,如获取设备联系人信息,定位设备的地理位置等。这部分权限需要通过代码进行申请弹出许可对话框,当用户手动统一之后才会获得授权。
- 特殊权限比较少见,Google认为这类权限比危险权限还要敏感,因此需要让用户到专门的设置页面去手动对某一个应用程序授权。
常用的特殊权限:
- 悬浮窗权限 SYSTEM_ALERT_WINDOW
AndroidManifest.xml中加入下面的代码
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
跳转到指定的页面
val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION)
startActivity(intent)
使用下面的Api判断权限是否已经授予
Settings.canDrawOverlays(context)
2. 修改设置权限 WRITE_SETTINGS
AndroidManifest.xml中加入下面的代码
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
跳转到指定的页面
val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
startActivity(intent)
使用下面的Api判断权限是否已经授予
Settings.System.canWrite(context)
3. 管理外部储存 MANAGE_EXTERNAL_STORAGE
AndroidManifest.xml中加入下面的代码
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
跳转到指定的页面
val intent = Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)
startActivity(intent)
使用下面的Api判断权限是否已经授予
Environment.isExternalStorageManager()