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