2012-11-22 114 views
8

當我在Nexus 7上對所有應用程序執行所有權限轉儲時,我得到(如預期的)保護級別爲0(NORMAL),1(危險),2(SIGNATURE)的權限。沒有任何記錄在3(SIGNATURE_OR_SYSTEM)*下。Android權限保護級別18和50

但也有很多權限的保護級別設置爲'18',有些是'50'。

我無法找到這些值代表什麼文件。有人知道嗎?

*這不是在3

記錄這些東西是什麼被記錄:

android.permission.ACCESS_CACHE_FILESYSTEM - 18 
android.permission.ACCESS_CHECKIN_PROPERTIES - 18 
android.permission.ACCESS_DOWNLOAD_MANAGER - 18 
android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED - 18 
android.permission.ACCESS_MTP - 18 
android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK - 18 
android.permission.BACKUP - 18 
android.permission.BIND_APPWIDGET - 18 
android.permission.BIND_DIRECTORY_SEARCH - 18 
android.permission.BIND_KEYGUARD_APPWIDGET - 18 
android.permission.BIND_REMOTEVIEWS - 18 
android.permission.BIND_WALLPAPER - 18 
android.permission.CALL_PRIVILEGED - 18 
android.permission.CHANGE_COMPONENT_ENABLED_STATE - 18 
android.permission.CHANGE_CONFIGURATION - 18 
android.permission.CONNECTIVITY_INTERNAL - 18 
android.permission.CONTROL_LOCATION_UPDATES - 18 
android.permission.CRYPT_KEEPER - 18 
android.permission.DELETE_CACHE_FILES - 18 
android.permission.DELETE_PACKAGES - 18 
android.permission.DOWNLOAD_CACHE_NON_PURGEABLE - 18 
android.permission.GLOBAL_SEARCH - 18 
android.permission.INSTALL_LOCATION_PROVIDER - 18 
android.permission.INSTALL_PACKAGES - 18 
android.permission.MANAGE_USB - 18 
android.permission.MANAGE_USERS - 18 
android.permission.MASTER_CLEAR - 18 
android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS - 18 
android.permission.MODIFY_NETWORK_ACCOUNTING - 18 
android.permission.MODIFY_PHONE_STATE - 18 
android.permission.MOUNT_FORMAT_FILESYSTEMS - 18 
android.permission.MOUNT_UNMOUNT_FILESYSTEMS - 18 
android.permission.MOVE_PACKAGE - 18 
android.permission.PACKAGE_USAGE_STATS - 18 
android.permission.PACKAGE_VERIFICATION_AGENT - 18 
android.permission.PERFORM_CDMA_PROVISIONING - 18 
android.permission.READ_FRAME_BUFFER - 18 
android.permission.READ_NETWORK_USAGE_HISTORY - 18 
android.permission.READ_PRIVILEGED_PHONE_STATE - 18 
android.permission.REBOOT - 18 
android.permission.RECEIVE_DATA_ACTIVITY_CHANGE - 18 
android.permission.RECEIVE_EMERGENCY_BROADCAST - 18 
android.permission.RETRIEVE_WINDOW_CONTENT - 18 
android.permission.SEND_SMS_NO_CONFIRMATION - 18 
android.permission.SERIAL_PORT - 18 
android.permission.SET_TIME - 18 
android.permission.SET_WALLPAPER_COMPONENT - 18 
android.permission.SHUTDOWN - 18 
android.permission.STATUS_BAR - 18 
android.permission.STOP_APP_SWITCHES - 18 
android.permission.UPDATE_DEVICE_STATS - 18 
android.permission.UPDATE_LOCK - 18 
android.permission.WRITE_APN_SETTINGS - 18 
android.permission.WRITE_GSERVICES - 18 
android.permission.WRITE_MEDIA_STORAGE - 18 
com.android.chrome.TOS_ACKED - 18 
com.android.launcher.permission.PRELOAD_WORKSPACE - 18 
com.android.vending.TOS_ACKED - 18 
com.android.vending.billing.ADD_CREDIT_CARD - 18 
com.android.vending.billing.BILLING_ACCOUNT_SERVICE - 18 
com.google.android.c2dm.permission.SEND - 18 
com.google.android.gallery3d.permission.GALLERY_PROVIDER - 18 
com.google.android.gtalkservice.permission.SEND_HEARTBEAT - 18 
com.google.android.partnersetup.permission.UPDATE_CLIENT_ID - 18 
com.google.android.permission.BROADCAST_DATA_MESSAGE - 18 
com.google.android.providers.gsf.permission.WRITE_GSERVICES - 18 
com.google.android.xmpp.permission.BROADCAST - 18 
com.google.android.xmpp.permission.XMPP_ENDPOINT_BROADCAST - 18 

android.permission.CHANGE_CONFIGURATION - 50 
android.permission.DUMP - 50 
android.permission.INTERACT_ACROSS_USERS - 50 
android.permission.READ_LOGS - 50 
android.permission.SET_ALWAYS_FINISH - 50 
android.permission.SET_ANIMATION_SCALE - 50 
android.permission.SET_DEBUG_APP - 50 
android.permission.SET_PROCESS_LIMIT - 50 
android.permission.SIGNAL_PERSISTENT_PROCESSES - 50 
android.permission.WRITE_SECURE_SETTINGS - 50 
+1

什麼是18和50級別的權限名稱和值?是否有來自AOSP的應用程序,您可以查看源代碼? – CommonsWare

+0

你如何轉儲它? 18箇中的許多隻是'signatureOrSystem',50個只是'危險的'。 – kennytm

+0

通過Logcat轉儲它(遍歷所有ApplicationInfo的/ PackInfo並形成一組所有權限)該值取自PermissionInfo.protectionLevel。 –

回答

14

剛看到一個古老的懸而未決的問題。雖然你可能已經得到你的答案,但無論如何我都會回答。它可以幫助其他人。 :)

還有很多權限的保護級別設置爲'18'和一些是'50'。

下面的代碼是從PermissionInfo.java Android中源檢索:

/** 
* Additional flag for {@link #protectionLevel}, corresponding 
* to the <code>system</code> value of 
* {@link android.R.attr#protectionLevel}. 
*/ 
public static final int PROTECTION_FLAG_SYSTEM = 0x10; 

/** 
* Additional flag for {@link #protectionLevel}, corresponding 
* to the <code>development</code> value of 
* {@link android.R.attr#protectionLevel}. 
*/ 
public static final int PROTECTION_FLAG_DEVELOPMENT = 0x20; 

所以,如果有一個簽名/系統的權限,電平將是18(爲0x10 | 0X2)。如果用於特殊開發工具的權限用途爲50(0x10 | 0x20 | 0x2)。

我找不到這些值代表什麼文件。有人知道嗎?

正如我answered in an existing question,你可以檢查保護級別和這些權限在framework/base/core/res/AndroidManifest.xmlframework/base/data/etc/platform.xml描述。我將其中一些帖子發佈在這裏供您參考。

<!-- Configure an application for debugging. --> 
<permission android:name="android.permission.SET_DEBUG_APP" 
    android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS" 
    android:protectionLevel="signature|system|development" 
    android:label="@string/permlab_setDebugApp" 
    android:description="@string/permdesc_setDebugApp" /> 

<!-- @hide Package verifier needs to have this permission before the PackageManager will 
    trust it to verify packages. 
--> 
<permission android:name="android.permission.PACKAGE_VERIFICATION_AGENT" 
    android:label="@string/permlab_packageVerificationAgent" 
    android:description="@string/permdesc_packageVerificationAgent" 
    android:protectionLevel="signature|system" /> 

如果有@hide註釋,XML塊上,你不能從這個許可文件找到任何資源。

1

構成您所指的那些開發權限0x20是由Google在Android開發過程中引入的一組權限,並且它們不會自動被PackageManager授予。爲了能夠使用它們,您必須授權使用adb shell pm grant permission

您可以看到這樣做的代碼以及Google在此02/21/2012 commit上引入的更改。

+0

當你說權限你的意思是像android.permission.MAIN_APP_DISPLAYED? –