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()