Android學習之擴展android的權限管理

Android學習之擴展android的權限管理

以CyanogenMod中關於動態開啓/關閉APK的指定權限功能爲例來分析

CyanogenMod在7.0的時候提供了revoke permission的功能, 可以從設置->CM設置->通用設置->權限管理, 打開這個功能. 從而可以動態的管理應用程序的權限.

具體介紹參見http://wiki.cyanogenmod.com/wiki/CyanogenMod_Settings


相關代碼:

1. CM設置對應的代碼爲packages/apps/CMParts

從其AndroidManifest.xml中, 可以看出它需要有system的權限,這樣才能保證它可以操縱permission相關的framework提供的接口和服務

android:sharedUserId="android.uid.system"

2. 在frameworks/base/core/java/android/widget/中增加了處理permission on/off的新的類:AppSecurityEditablePermissions

3. 對PackageManager.java/PackageManagerService.java等frameworks/base/core/的PM的邏輯進行了修改.

   GrantedPermissions/SharedUserSetting中增加了新的revokedPermissions和effectivePermissions用來進行permission擴展的屬性.

  在PackageManagerService.java中的checkPermission,checkUidPermission函數, 增加了對revokedPermissions和effectivePermissions的檢查邏輯,從而保證Setting中修改過的permission在運行時,能夠生效.

4. 對於revokedPermissions和effectivePermissions的初始化

   getRevokedPermissions/setRevokedPermissions/updateEffectivePermissions

          5. 在系統中增加了一個叫做android.permission.REVOKE_PERMISSIONS的權限

參考資料:

apex: http://profsandhu.com/zhang/pub/apex.pdf
android security: https://www.blackhat.com/docs/webcast/bhwebcast30_anderson.pdf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章