我們一起倆聊聊普通權限與危險權限的恩怨情仇
在Android開發中,權限是一種安全機制,用于控制應用程序對系統資源和數據的訪問。Android系統提供了一系列的權限,包括但不限于訪問網絡、讀取存儲、定位等。開發者在開發應用時需要在清單文件(AndroidManifest.xml)中聲明所需的權限,以便在用戶安裝應用時向用戶展示權限請求,并在運行時獲取所需的權限。
應用訪問網絡的權限聲明的示例:
<uses-permission android:name="android.permission.INTERNET" />
權限分為普通權限和危險權限兩種類型。普通權限是指不涉及用戶隱私和敏感數據的權限,系統會自動授予應用。而危險權限是指涉及用戶隱私和敏感數據的權限,需要在運行時向用戶請求授權。開發者需要在代碼中處理用戶授權的結果,并在需要權限時動態請求權限。
普通權限
普通權限是指不涉及用戶隱私或設備操作的權限,通常不需要用戶明確授權。一般來說,普通權限包括訪問網絡狀態、訪問網絡、訪問WiFi連接狀態等。在Android應用程序開發中,可以在清單文件(AndroidManifest.xml)中聲明需要使用的普通權限。
ACCESS_CHECKIN_PROPERTIES:讀取和寫入“properties”表在checkin數據庫中
ACCESS_LOCATION_EXTRA_COMMANDS:訪問額外的位置提供命令
ACCESS_NETWORK_STATE:獲取網絡信息狀態
ACCESS_NOTIFICATION_POLICY:希望訪問通知策略的應用程序的標記許可
ACCESS_WIFI_STATE:獲取當前WiFi接入的狀態以及WLAN熱點的信息
ACCOUNT_MANAGER:通過賬戶驗證方式訪問賬戶管理ACCOUNT_MANAGER相關信息
BATTERY_STATS:更新手機電池統計信息
BIND_ACCESSIBILITY_SERVICE:請求accessibilityservice服務
BIND_APPWIDGET:告訴appWidget服務需要訪問小插件的數據庫
BIND_CARRIER_MESSAGING_SERVICE:綁定到運營商應用程序中的服務
BIND_CARRIER_SERVICES:綁定到運營商應用程序中的服務
BIND_CHOOSER_TARGET_SERVICE:由ChooserTargetService要求的服務
BIND_DEVICE_ADMIN:請求系統管理員receiver
BIND_DREAM_SERVICE:由一個DreamService要求的服務
BIND_INCALL_SERVICE:請求MidiDeviceService服務
BIND_INPUT_METHOD:請求InputMethodService服務
BIND_MIDI_DEVICE_SERVICE:由一MidiDeviceService要求的服務
BIND_NFC_SERVICE:由HostApduServiceOffHostApduService要求的服務
BIND_NOTIFICATION_LISTENER_SERVICE:由notificationlistenerservice要求的服務
BIND_PRINT_SERVICE:由printservice要求的服務
BIND_REMOTEVIEWS:通過RemoteViewsService服務請求
BIND_TELECOM_CONNECTION_SERVICE:由ConnectionService要求的服務
BIND_TEXT_SERVICE:由textservice要求的服務
BIND_TV_INPUT:由TvInputService要求的服務
BIND_VOICE_INTERACTION:由VoiceInteractionService要求的服務
BIND_VPN_SERVICE:通過VpnService服務請求
BIND_WALLPAPER:通過WallpaperService服務請求
BLUETOOTH:連接配對過的藍牙設備
BLUETOOTH_ADMIN:發現和配對新的藍牙設備
BLUETOOTH_PRIVILEGED:配對藍牙設備,無需用戶交互
BROADCAST_PACKAGE_REMOVED:廣播一個提示消息在一個應用程序包已經移除后
BROADCAST_SMS:當收到短信時觸發廣播
BROADCAST_STICKY:收到廣播后快速收到下一個廣播
BROADCAST_WAP_PUSH:WAP PUSH服務收到后觸發廣播
CALL_PRIVILEGED:撥打電話,替換系統的撥號器界面
CAPTURE_AUDIO_OUTPUT:捕獲音頻輸出
CAPTURE_SECURE_VIDEO_OUTPUT:捕獲視頻輸出
CAPTURE_VIDEO_OUTPUT:捕獲視頻輸出
CHANGE_COMPONENT_ENABLED_STATE:改變組件是否啟用狀態
CHANGE_CONFIGURATION:改變配置信息
CHANGE_NETWORK_STATE:改變網絡狀態,如是否聯網
CHANGE_WIFI_MULTICAST_STATE:改變WiFi多播狀態
CHANGE_WIFI_STATE:改變WiFi狀態
CLEAR_APP_CACHE:清除應用緩存
CONTROL_LOCATION_UPDATES:獲得移動網絡定位信息
DELETE_CACHE_FILES:刪除緩存文件
DELETE_PACKAGES:刪除應用
DIAGNOSTIC:RW到診斷資源
DISABLE_KEYGUARD:禁用鍵盤鎖
DUMP:獲取系統dump信息
EXPAND_STATUS_BAR:擴展或收縮狀態欄
FACTORY_TEST:運行工廠測試模式
FLASHLIGHT:訪問閃光燈
GET_ACCOUNTS_PRIVILEGED:訪問帳戶服務中的帳戶列表
GET_PACKAGE_SIZE:獲取任何package占用空間容量
GET_TASKS:獲取信息有關當前或最近運行的任務
GLOBAL_SEARCH:允許全局搜索
INSTALL_LOCATION_PROVIDER:安裝定位提供
INSTALL_PACKAGES:安裝應用
INSTALL_SHORTCUT:創建快捷方式
INTERNET:訪問網絡連接
KILL_BACKGROUND_PROCESSES:結束后臺進
LOCATION_HARDWARE:使用定位功能的硬件
MANAGE_DOCUMENTS:管理文檔訪問
MASTER_CLEAR:執行軟格式化,刪除系統配置信息
MEDIA_CONTENT_CONTROL:控制播放和內容
MODIFY_AUDIO_SETTINGS:修改聲音設置信息
MODIFY_PHONE_STATE:修改電話狀態
MOUNT_FORMAT_FILESYSTEMS:格式化可移動文件系統
MOUNT_UNMOUNT_FILESYSTEMS:掛載、反掛載外部文件系統
NFC:執行NFC近距離通訊操作
PACKAGE_USAGE_STATS:設置他的activities顯示
PERSISTENT_ACTIVITY:創建一個永久的Activity
READ_FRAME_BUFFER:讀取幀緩存
READ_INPUT_STATE:讀取當前鍵的輸入狀態
READ_LOGS:讀取系統底層日志
READ_SYNC_SETTINGS:讀取同步設置
READ_SYNC_STATS:讀取同步狀態
READ_VOICEMAIL:讀取語音郵件
REBOOT:重新啟動設備
RECEIVE_BOOT_COMPLETED:開機自動運行
REORDER_TASKS:重新排序系統Z軸運行中的任務
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS:請求忽略電池優化
REQUEST_INSTALL_PACKAGES:請求安裝包
RESTART_PACKAGES:結束任務
SEND_RESPOND_VIA_MESSAGE:即時的短信息回復
SET_ALARM:設置鬧鈴提醒
SET_ALWAYS_FINISH:程序在后臺是否總是退出
SET_ANIMATION_SCALE:設置全局動畫縮放
SET_DEBUG_APP:設置調試程序
SET_PREFERRED_APPLICATIONS:設置應用的參數
SET_PROCESS_LIMIT:設置最大的進程數量的限制
SET_TIME:設置系統時間
SET_TIME_ZONE:設置系統時區
SET_WALLPAPER:設置桌面壁紙
SET_WALLPAPER_HINTS:設置壁紙建議
SIGNAL_PERSISTENT_PROCESSES:發送一個永久的進程信號
STATUS_BAR:打開、關閉、禁用狀態欄
SYSTEM_ALERT_WINDOW:顯示系統窗口
TRANSMIT_IR:使用設備的紅外發射器
UNINSTALL_SHORTCUT:刪除快捷方式
UPDATE_DEVICE_STATS:更新設備狀態
USE_FINGERPRINT:使用指紋硬件
VIBRATE:允許程序振動
WAKE_LOCK :允許程序在手機屏幕關閉后后臺進程仍然運行
WRITE_APN_SETTINGS:允許程序寫入網絡GPRS接入點設置
WRITE_GSERVICES:允許程序修改Google服務地圖
WRITE_SECURE_SETTINGS:允許應用程序讀取或寫入安全系統設置
WRITE_SETTINGS:允許程序讀取或寫入系統設置 WRITE_SYNC_SETTINGS:允許程序寫入同步設置
WRITE_VOICEMAIL:允許應用程序修改和刪除系統中的現有的語音郵件,只有系統才能使用
危險權限
在Android系統中,危險權限是指那些涉及用戶隱私或可能對設備造成重大影響的權限。這些權限需要用戶明確授權才能被應用程序調用。
短信權限
SEND_SMS:發送短信
RECEIVE_SMS:接收短信
READ_SMS:讀取短信
RECEIVE_WAP_PUSH:接收WAP Push消息
RECEIVE_MMS:接收彩信
聯系人權限
READ_CONTACTS:讀取聯系人
WRITE_CONTACTS:寫入聯系人
GET_ACCOUNTS:訪問帳戶列表
存儲權限
READ_EXTERNAL_STORAGE:讀取SD卡中的內容
WRITE_EXTERNAL_STORAGE:向SD卡中寫入內容
手機權限
READ_PHONE_STATE:讀取手機狀態
CALL_PHONE:撥打電話
READ_CALL_LOG:讀取通話記錄
WRITE_CALL_LOG:寫入通話記錄
ADD_VOICEMAIL:添加語音信箱
USE_SIP:使用SIP協議進行網絡電話
PROCESS_OUTGOING_CALLS:處理呼出電話
日歷權限
READ_CALENDAR:讀取日歷
WRITE_CALENDAR:寫入日歷
相機權限
CAMERA:訪問攝像頭
位置權限
ACCESS_FINE_LOCATION:訪問精準位置
ACCESS_COARSE_LOCATION:訪問大致位置
傳感器權限
BODY_SENSORS:訪問傳感器
麥克風權限
RECORD_AUDIO:錄音
使用這些危險權限需要經過用戶的授權,并且開發者需要在應用程序中清晰地說明使用這些權限的原因。