android默認獲取敏感權限


1.通過系統簽名獲取權限

定制系統中,可以通過源碼的簽名文件對應用進行簽名,在應用的AndroidManifest.xml中配置好參數,如圖

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
coreApp="true"
package="com.xxx.xxx"
android:sharedUserId="android.uid.system"
android:versionCode="1"
android:versionName="1.0">

<uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" />
<uses-permission android:name="android.permission.REBOOT" />
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
添加 android:sharedUserId=“android.uid.system”,然后將需要的敏感權限或系統級權限列出。
1.如果是將apk或app代碼放在系統源碼中編譯可自動簽名。
2.在源碼的build\target\product\security將簽名文件拷出,同時在out\host\linux-x86\framework目錄將signapk.jar文件拷出,放在同一個文件夾下

,修改 sign.bat處理文件,例如:

java -jar signapk.jar platform.x509.pem platform.pk8 簽名前.apk .\簽名后.apk
分別編輯對應的apk名稱,和簽名后的名稱,完成后雙擊運行sign.bat,就會生成簽名后的apk。

2.通過targetSDKVersion來靜態獲取敏感權限

Android6.0以后權限分為普通權限normal permission 和危險權限dangerous permission
將targetSDKVersion 設置到 23 以下 可在安裝時就獲取權限,對於部分定制系統(電視盒子,車載系統等)的應用來說,動態獲取權限是比較不方便和不理想的,在對新API接口依賴不大的應用采用這樣的方式可以方便第三方開發商調試。

Normal Permission:寫在xml文件里,那么App安裝時就會默認獲得這些權限,即使是在Android6.0系統的手機上,用戶也無法在安裝后動態取消這些normal權限,這和以前的權限系統是一樣的,不變。

Dangerous Permission:還是得寫在xml文件里,但是App安裝時具體如果執行授權分以下幾種情況:

1、targetSDKVersion < 23 & API(手機系統) < 6.0 :安裝時默認獲得權限,且用戶無法在安裝App之后取消權限。
3、targetSDKVersion < 23 & API(手機系統) >= 6.0 :安裝時默認獲得權限,但是用戶可以在安裝App完成后動態取消授權( 取消時手機會彈出提醒,告訴用戶這個是為舊版手機打造的應用,讓用戶謹慎操作 )。
2、targetSDKVersion >= 23 & API(手機系統) < 6.0 :安裝時默認獲得權限,且用戶無法在安裝App之后取消權限。
4、targetSDKVersion >= 23 & API(手機系統) >= 6.0 :安裝時不會獲得權限,可以在運行時向用戶申請權限。用戶授權以后仍然可以在設置界面中取消授權,用戶主動在設置界面取消后,在app運行過程中可能會出現crash。

對於部分系統權限,需要在源碼中進行修改權限等級或權限功能,然后在列表中列出。

 

3、安卓所擁有的權限列表

  

普通權限
1)系統自動授權,只需要在清單文件中添加權限即可。
ACCESS_LOCATION_EXTRA_COMMANDS
ACCESS_NETWORK_STATE
ACCESS_NOTIFICATION_POLICY
ACCESS_WIFI_STATE
BLUETOOTH
BLUETOOTH_ADMIN
BROADCAST_STICKY
CHANGE_NETWORK_STATE
CHANGE_WIFI_MULTICAST_STATE
CHANGE_WIFI_STATE
DISABLE_KEYGUARD
EXPAND_STATUS_BAR
GET_PACKAGE_SIZE
INSTALL_SHORTCUT
INTERNET
KILL_BACKGROUND_PROCESSES
MODIFY_AUDIO_SETTINGS
NFC
READ_SYNC_SETTINGS
READ_SYNC_STATS
RECEIVE_BOOT_COMPLETED
REORDER_TASKS
REQUEST_INSTALL_PACKAGES
SET_ALARM
SET_TIME_ZONE
SET_WALLPAPER
SET_WALLPAPER_HINTS
TRANSMIT_IR
UNINSTALL_SHORTCUT
USE_FINGERPRINT
VIBRATE
WAKE_LOCK
WRITE_SYNC_SETTINGS
 
危險權限
1)需要動態申請,同一組的任何一個權限被授權了,其他權限也自動被授權。
CALENDAR(日歷)
   READ_CALENDAR
   WRITE_CALENDAR
CAMERA(相機)
   CAMERA
CONTACTS(聯系人)
   READ_CONTACTS
   WRITE_CONTACTS
   GET_ACCOUNTS
LOCATION(位置)
   ACCESS_FINE_LOCATION
   ACCESS_COARSE_LOCATION
MICROPHONE(麥克風)
   RECORD_AUDIO
PHONE(手機)
   READ_PHONE_STATE
   READ_PHONE_NUMBERS
   CALL_PHONE
   READ_CALL_LOG
   WRITE_CALL_LOG
   ADD_VOICEMAIL
   USE_SIP
   PROCESS_OUTGOING_CALLS
   PROCESS_OUTGOING_CALLS
SENSORS(傳感器)
   BODY_SENSORS
SMS(短信)
   SEND_SMS
   RECEIVE_SMS
   READ_SMS
   RECEIVE_WAP_PUSH
   RECEIVE_MMS
STORAGE(存儲卡)
   READ_EXTERNAL_STORAGE
   WRITE_EXTERNAL_STORAGE

  • 特殊權限

有一些權限與普通權限和危險權限都不同。SYSTEM_ALERT_WINDOWWRITE_SETTINGS 特別敏感,因此大多數應用不應該使用它們。如果某應用需要其中一種權限,必須在清單中聲明該權限,並且發送請求用戶授權的 intent。系統將向用戶顯示詳細管理屏幕,以響應該 intent。

如需了解有關如何請求這些權限的詳情,請參閱 SYSTEM_ALERT_WINDOWWRITE_SETTINGS 參考條目。


來源:https://blog.csdn.net/qq_33826580/article/details/88117057

    https://www.jianshu.com/p/24f79a70025b

特此感謝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM