本文主要記錄安卓權限和安卓動態權限及動態權限的使用方法android
經常使用權限數組 |
|
訪問網絡瀏覽器 |
android.permission.INTERNET |
寫入外部存儲安全 |
android.permission.WRITE_EXTERNAL_STORAGE |
獲取網絡狀態app |
android.permission.ACCESS_NETWORK_STATE |
撥打電話優化 |
android.permission.CALL_PHONE |
拍照權限 |
android.permission.CAMERA |
讀取電話狀態 |
android.permission.READ_PHONE_STATE |
讀取短信內容 |
android.permission.READ_SMS |
寫入聯繫人 |
android.permission.WRITE_CONTACTS |
設置屏幕方向 |
android.permission.SET_ORIENTATION |
其餘權限 |
|
訪問登記屬性 |
android.permission.ACCESS_CHECKIN_PROPERTIES
|
獲取精確位置 |
android.permission.ACCESS_FINE_LOCATION |
訪問定位額外命令 |
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS |
獲取模擬定位信息 |
android.permission.ACCESS_MOCK_LOCATION |
訪問 |
android.permission.ACCESS_SURFACE_FLINGER |
獲取WiFi狀態 |
android.permission.ACCESS_WIFI_STATE |
帳戶管理 |
android.permission.ACCOUNT_MANAGER |
驗證帳戶 |
android.permission.AUTHENTICATE_ACCOUNTS |
電量統計 |
android.permission.BATTERY_STATS |
綁定小插件 |
android.permission.BIND_APPWIDGET |
綁定設備管理 |
android.permission.BIND_DEVICE_ADMIN |
綁定輸入法 |
android.permission.BIND_INPUT_METHOD |
綁定RemoteView |
android.permission.BIND_REMOTEVIEWS |
綁定壁紙 |
android.permission.BIND_WALLPAPER |
使用藍牙 |
android.permission.BLUETOOTH |
藍牙管理 |
android.permission.BLUETOOTH_ADMIN |
變成磚頭 |
android.permission.BRICK |
應用刪除時廣播 |
android.permission.BROADCAST_PACKAGE_REMOVED |
收到短信時廣播 |
android.permission.BROADCAST_SMS |
連續廣播 |
android.permission.BROADCAST_STICKY |
WAP PUSH廣播 |
android.permission.BROADCAST_WAP_PUSH |
通話權限 |
android.permission.CALL_PRIVILEGED |
改變組件狀態 |
android.permission.CHANGE_COMPONENT_ENABLED_STATE |
改變配置 |
android.permission.CHANGE_CONFIGURATION |
改變網絡狀態 |
android.permission.CHANGE_NETWORK_STATE |
改變WiFi多播狀態 |
android.permission.CHANGE_WIFI_MULTICAST_STATE |
改變WiFi狀態 |
android.permission.CHANGE_WIFI_STATE |
清除應用緩存 |
android.permission.CLEAR_APP_CACHE |
清除用戶數據 |
android.permission.CLEAR_APP_USER_DATA |
底層訪問權限 |
android.permission.CWJ_GROUP |
手機優化大師擴展權限 |
android.permission.CELL_PHONE_MASTER_EX |
控制定位更新 |
android.permission.CONTROL_LOCATION_UPDATES |
刪除緩存文件 |
android.permission.DELETE_CACHE_FILES |
刪除應用 |
android.permission.DELETE_PACKAGES |
電源管理 |
android.permission.DEVICE_POWER |
應用診斷 |
android.permission.DIAGNOSTIC |
禁用鍵盤鎖 |
android.permission.DISABLE_KEYGUARD |
轉存系統信息 |
android.permission.DUMP |
狀態欄控制 |
android.permission.EXPAND_STATUS_BAR |
工廠測試模式 |
android.permission.FACTORY_TEST |
使用閃光燈 |
android.permission.FLASHLIGHT |
強制後退 |
android.permission.FORCE_BACK |
訪問帳戶Gmail列表 |
android.permission.GET_ACCOUNTS |
獲取應用大小 |
android.permission.GET_PACKAGE_SIZE |
獲取任務信息 |
android.permission.GET_TASKS |
容許全局搜索 |
android.permission.GLOBAL_SEARCH |
硬件測試 |
android.permission.HARDWARE_TEST |
注射事件 |
android.permission.INJECT_EVENTS |
安裝定位提供 |
android.permission.INSTALL_LOCATION_PROVIDER |
安裝應用程序 |
android.permission.INSTALL_PACKAGES |
內部系統窗口 |
android.permission.INTERNAL_SYSTEM_WINDOW |
結束後臺進程 |
android.permission.KILL_BACKGROUND_PROCESSES |
管理帳戶 |
android.permission.MANAGE_ACCOUNTS |
管理程序引用 |
android.permission.MANAGE_APP_TOKENS |
高級權限 |
android.permission.MTWEAK_USER |
社區權限 |
android.permission.MTWEAK_FORUM |
軟格式化 |
android.permission.MASTER_CLEAR |
修改聲音設置 |
android.permission.MODIFY_AUDIO_SETTINGS |
修改電話狀態 |
android.permission.MODIFY_PHONE_STATE |
格式化文件系統 |
android.permission.MOUNT_FORMAT_FILESYSTEMS |
掛載文件系統 |
android.permission.MOUNT_UNMOUNT_FILESYSTEMS |
容許NFC通信 |
android.permission.NFC |
永久Activity |
android.permission.PERSISTENT_ACTIVITY |
處理撥出電話 |
android.permission.PROCESS_OUTGOING_CALLS |
讀取日程提醒 |
android.permission.READ_CALENDAR |
讀取聯繫人 |
android.permission.READ_CONTACTS |
屏幕截圖 |
android.permission.READ_FRAME_BUFFER |
讀取收藏夾和歷史記錄 |
com.android.browser.permission.READ_HISTORY_BOOKMARKS |
讀取輸入狀態 |
android.permission.READ_INPUT_STATE |
讀取系統日誌 |
android.permission.READ_LOGS |
讀取同步設置 |
android.permission.READ_SYNC_SETTINGS |
讀取同步狀態 |
android.permission.READ_SYNC_STATS |
重啓設備 |
android.permission.REBOOT |
開機自動容許 |
android.permission.RECEIVE_BOOT_COMPLETED |
接收彩信 |
android.permission.RECEIVE_MMS |
接收短信 |
android.permission.RECEIVE_SMS |
接收Wap Push |
android.permission.RECEIVE_WAP_PUSH |
錄音 |
android.permission.RECORD_AUDIO |
排序系統任務 |
android.permission.REORDER_TASKS |
結束系統任務 |
android.permission.RESTART_PACKAGES |
發送短信 |
android.permission.SEND_SMS |
設置Activity觀察其 |
android.permission.SET_ACTIVITY_WATCHER |
設置鬧鈴提醒 |
com.android.alarm.permission.SET_ALARM |
設置老是退出 |
android.permission.SET_ALWAYS_FINISH |
設置動畫縮放 |
android.permission.SET_ANIMATION_SCALE |
設置調試程序 |
android.permission.SET_DEBUG_APP |
設置應用參數 |
android.permission.SET_PREFERRED_APPLICATIONS |
設置進程限制 |
android.permission.SET_PROCESS_LIMIT |
設置系統時間 |
android.permission.SET_TIME |
設置系統時區 |
android.permission.SET_TIME_ZONE |
設置桌面壁紙 |
android.permission.SET_WALLPAPER |
設置壁紙建議 |
android.permission.SET_WALLPAPER_HINTS |
發送永久進程信號 |
android.permission.SIGNAL_PERSISTENT_PROCESSES |
狀態欄控制 |
android.permission.STATUS_BAR |
訪問訂閱內容 |
android.permission.SUBSCRIBED_FEEDS_READ |
寫入訂閱內容 |
android.permission.SUBSCRIBED_FEEDS_WRITE |
顯示系統窗口 |
android.permission.SYSTEM_ALERT_WINDOW |
更新設備狀態 |
android.permission.UPDATE_DEVICE_STATS |
使用證書 |
android.permission.USE_CREDENTIALS |
使用SIP視頻 |
android.permission.USE_SIP |
使用振動 |
android.permission.VIBRATE |
喚醒鎖定 |
android.permission.WAKE_LOCK |
寫入GPRS接入點設置 |
android.permission.WRITE_APN_SETTINGS |
寫入日程提醒 |
android.permission.WRITE_CALENDAR |
寫入Google地圖數據 |
android.permission.WRITE_GSERVICES |
寫入收藏夾和歷史記錄 |
com.android.browser.permission.WRITE_HISTORY_BOOKMARKS |
讀寫系統敏感設置 |
android.permission.WRITE_SECURE_SETTINGS |
讀寫系統設置 |
android.permission.WRITE_SETTINGS |
編寫短信 |
android.permission.WRITE_SMS |
寫入在線同步設置 |
android.permission.WRITE_SYNC_SETTINGS |
動態申請權限步驟:
1、在AndroidMainfest.xml文件中申明權限
具體操做和安卓6.0如下的操做相同
2、判斷安卓系統版本
安卓6.0如下,低於API23如下是不須要進行動態權限申請的,因此動態申請權限先進行版本判斷
if (Build.VERSION.SDK_INT>=23) { //此處作動態權限申請 } else { //低於23 不須要特殊處理 }
經過步驟二若是判斷版本高於API23,則進行權限檢查,檢查當前應用中是否存在所須要的權限
//檢測是否有寫的權限
參數:上下文的context和權限的名稱
返回兩種狀況:PERMISSION_GRANTED 存在權限以及PERMISSION_DENIED 不存在權限
int permission = ActivityCompat.checkSelfPermission(getApplicationContext(), "android.permission.WRITE_EXTERNAL_STORAGE"); //
4、進行權限申請
if (permission != PackageManager.PERMISSION_GRANTED) { // 沒有寫的權限,去申請寫的權限,會彈出對話框,第一個參數是上下文,第二個參數是數組對象,第三個參數是惟一對應的請求碼,請求碼大小要介於0-65535之間 ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CAMERA},1); }
完整代碼
// 進行版本判斷 if (Build.VERSION.SDK_INT >= 23) { // 進行動態申請 //檢測是否有寫的權限 int permission = ActivityCompat.checkSelfPermission(getApplicationContext(), "android.permission.WRITE_EXTERNAL_STORAGE"); // 沒有寫的權限,去申請寫的權限,會彈出對話框 if (permission != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, 1); } } else { // 不進行操做 } }