Android权限保护级别18和50

当我做Nexus 7上的所有应用程序的所有权限的转储时,我得到(如预期的)保护级别为0(正常),1(危险),2(签名)的权限。 没有任何logging在3(SIGNATURE_OR_SYSTEM)*下。

但也有很多权限的保护级别设置为“18”,有些是“50”。

我无法find这些值代表什么文件。 有人知道吗?

*它不会在3以下logging任何东西。

这些是logging的:

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 

Solutions Collecting From Web of "Android权限保护级别18和50"

刚看到一个没有答案的老问题。 虽然你可能已经得到了你的答案,我仍然会回答。 它可以帮助别人。 🙂

也有很多权限的保护级别设置为“18”,有些是“50”。

以下代码是从Android Source的PermissionInfo.java中检索的:

 /** * 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)。

我无法find这些值代表什么文件。 有人知道吗?

正如我在现有问题中回答的 ,您可以在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" /> 

如果在该xml块上有@hide注释,则不能从有关此权限的文档中find任何资源。

开发许可0x20组成了你所指的那些是由Google在Android开发过程中引入的一组权限,它们从来不会被PackageManager自动授予。 为了能够使用它们,您必须授予使用adb shell pm grant permission

您可以看到在2012年2 月21日提交的代码和谷歌推出的更改。