我们如何列出所有定义的权限?

时间:2015-08-17 22:58:30

标签: android android-permissions

列出所有已定义权限的经典答案是使用pm list permissions命令。但是,在Android 5.1和Android 6.0的当前预览版中,该命令不会列出所有内容。

例如,在运行Android 5.1的Nexus 4上,我得到如下输出:

$ adb shell pm list permissions| fgrep WRITE_
permission:com.intsig.camscanner.WRITE_CAMSCANNER
permission:android.permission.WRITE_GSERVICES
permission:com.google.android.providers.gsf.permission.WRITE_GSERVICES
permission:com.android.voicemail.permission.READ_WRITE_ALL_VOICEMAIL
permission:com.android.launcher3.permission.WRITE_SETTINGS
permission:com.google.android.providers.settings.permission.WRITE_GSETTINGS
permission:com.android.chrome.permission.READ_WRITE_BOOKMARK_FOLDERS

WRITE_EXTERNAL_STORAGE没有出现在那里。然而,自Android 1.6以来,这种许可已经存在。类似命令显示pm list permissions缺少READ_EXTERNAL_STORAGEREAD_CONTACTSWRITE_CONTACTSINTERNET以及其他许多其他内容。

因此,如果pm list permissions没有为我们提供设备上已定义权限的完整列表,是否有另一种方法来获取该数据?

理论上,可能有一种方法可以从PackageManager获取它,但我没有看到getAllPermissions()方法,getAllPermissionGroups()会遗漏任何不在的权限基团。

我目前查询的原因是我想知道在Android 6.0上定义了哪些权限及其保护级别,我们还没有Android 6.0源代码AFAIK。有一些权限,例如CHANGE_WIFI_STATEBLUETOOTHBLUETOOTH_ADMINNFC以及历史上dangerous的其他权限。它们仍然在Android SDK中,但它们未列在与新的Android 6.0运行时权限系统相关联的权限中。所以,我试图确定它们是否已被降级为normal或其他什么。虽然我可以在逐个许可的基础上通过PackageManager执行此操作,但我希望尝试为所有权限收集protectionLevel值。

1 个答案:

答案 0 :(得分:6)

要使用adb获取所有权限的列表,您需要添加<p>标志。如果您查看source code,则会将-g添加到组列表中。正如您所指出的,null不包括未分组的权限。添加PackageManager#getAllPermissionGroups(int)作为组名将获得这些未分组的权限。

通过添加null作为权限组名称,我们可以使用null获取所有权限。我在运行Android 6.0当前预览版的Nexus 9上运行了以下代码。

代码:

PackageManager

输出:

public static void printPermissionInfo(Context context) throws Exception {
    PackageManager pm = context.getPackageManager();
    List<PermissionGroupInfo> groupList = pm.getAllPermissionGroups(0);
    groupList.add(null); // ungrouped permissions
    Method protectionToString = PermissionInfo.class.getDeclaredMethod("protectionToString",
            int.class);
    for (PermissionGroupInfo group : groupList) {
        try {
            String name = group == null ? null : group.name;
            List<PermissionInfo> permissionInfos = pm.queryPermissionsByGroup(name, 0);
            for (PermissionInfo permissionInfo : permissionInfos) {
                String protection = (String) protectionToString.invoke(permissionInfo,
                        permissionInfo.protectionLevel);
                System.out.println(permissionInfo.name + " " + protection);
            }
        } catch (PackageManager.NameNotFoundException ignored) {
        }
    }
}

在简要地看一下结果之后,看起来有些保护级别已经改变了。例如,com.google.android.gms.permission.CAR_VENDOR_EXTENSION dangerous com.google.android.gms.permission.CAR_MILEAGE dangerous com.google.android.gms.permission.CAR_FUEL dangerous android.permission.WRITE_CONTACTS dangerous android.permission.GET_ACCOUNTS dangerous android.permission.READ_CONTACTS dangerous android.permission.READ_CALL_LOG dangerous android.permission.READ_PHONE_STATE dangerous android.permission.ACCESS_IMS_CALL_SERVICE signature|privileged android.permission.CALL_PHONE dangerous android.permission.WRITE_CALL_LOG dangerous android.permission.USE_SIP dangerous android.permission.PROCESS_OUTGOING_CALLS dangerous com.android.voicemail.permission.ADD_VOICEMAIL dangerous android.permission.READ_CALENDAR dangerous android.permission.WRITE_CALENDAR dangerous android.permission.CAMERA dangerous android.permission.BODY_SENSORS dangerous android.permission.USE_FINGERPRINT normal android.permission.ACCESS_FINE_LOCATION dangerous com.google.android.gms.permission.CAR_SPEED dangerous android.permission.ACCESS_COARSE_LOCATION dangerous android.permission.READ_EXTERNAL_STORAGE dangerous android.permission.WRITE_EXTERNAL_STORAGE dangerous android.permission.RECORD_AUDIO dangerous android.permission.READ_SMS dangerous android.permission.RECEIVE_WAP_PUSH dangerous android.permission.RECEIVE_MMS dangerous android.permission.RECEIVE_SMS dangerous android.permission.SEND_SMS dangerous android.permission.READ_CELL_BROADCASTS dangerous android.permission.REAL_GET_TASKS signature|privileged android.permission.ACCESS_CACHE_FILESYSTEM signature|privileged android.permission.REMOTE_AUDIO_PLAYBACK signature com.google.android.apps.photos.permission.C2D_MESSAGE signature android.permission.INTENT_FILTER_VERIFICATION_AGENT signature|privileged android.permission.BIND_INCALL_SERVICE signature|privileged com.google.android.gms.trustagent.framework.model.DATA_CHANGE_NOTIFICATION signature android.permission.WRITE_SETTINGS signature|appop|pre23|preinstalled android.permission.CONTROL_KEYGUARD signature com.google.android.apps.magazines.permission.C2D_MESSAGE signature com.google.android.calendar.permission.C2D_MESSAGE signature android.permission.CONFIGURE_WIFI_DISPLAY signature android.permission.ACCESS_WIMAX_STATE normal android.permission.SET_INPUT_CALIBRATION signature android.permission.RECOVERY signature|privileged android.permission.TEMPORARY_ENABLE_ACCESSIBILITY signature com.google.android.talk.permission.C2D_MESSAGE signature android.permission.SET_PROCESS_LIMIT signature|privileged|development com.google.android.googlequicksearchbox.permission.C2D_MESSAGE signature android.permission.FRAME_STATS signature com.google.android.apps.genie.geniewidget.permission.C2D_MESSAGE signature android.permission.BRICK signature com.google.android.gallery3d.permission.GALLERY_PROVIDER signature android.permission.RESTART_PACKAGES normal android.permission.BIND_KEYGUARD_APPWIDGET signature|privileged android.permission.BIND_DEVICE_ADMIN signature android.permission.MODIFY_AUDIO_SETTINGS normal android.permission.ACCESS_CHECKIN_PROPERTIES signature|privileged android.permission.KILL_UID signature|installer android.permission.SIGNAL_PERSISTENT_PROCESSES signature|privileged|development android.permission.BIND_PRINT_SERVICE signature android.permission.ACCESS_NOTIFICATION_POLICY normal android.permission.MODIFY_AUDIO_ROUTING signature|privileged android.permission.RECEIVE_BLUETOOTH_MAP signature|privileged android.permission.ACCESS_MOCK_LOCATION signature com.google.android.apps.enterprise.dmagent.permission.NotificationBroadcastReceiverPermission signature|privileged android.permission.GET_APP_OPS_STATS signature|privileged|development android.permission.RECEIVE_DATA_ACTIVITY_CHANGE signature|privileged android.permission.GET_PACKAGE_IMPORTANCE signature|privileged com.google.android.youtube.permission.C2D_MESSAGE signature android.permission.READ_WIFI_CREDENTIAL signature|privileged android.permission.BIND_DREAM_SERVICE signature android.permission.WRITE_GSERVICES signature|privileged com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS signature android.permission.INSTALL_LOCATION_PROVIDER signature|privileged com.google.android.voicesearch.AUDIO_FILE_ACCESS signature android.permission.CONTROL_WIFI_DISPLAY signature android.permission.SYSTEM_ALERT_WINDOW signature|appop|pre23|preinstalled android.permission.BIND_CARRIER_SERVICES signature|privileged com.google.android.gsf.subscribedfeeds.permission.C2D_MESSAGE signature android.permission.BROADCAST_PHONE_ACCOUNT_REGISTRATION signature|privileged android.permission.START_TASKS_FROM_RECENTS signature|privileged com.google.android.apps.enterprise.dmagent.permission.AutoRegisterPermission signature|privileged android.permission.CONTROL_LOCATION_UPDATES signature|privileged com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE signature android.permission.GET_TOP_ACTIVITY_INFO signature android.permission.CLEAR_APP_USER_DATA signature|installer android.permission.PROVIDE_TRUST_AGENT signature|privileged android.permission.BROADCAST_CALLLOG_INFO signature|privileged com.google.android.gms.chromesync.permission.CONTENT_PROVIDER_ACCESS signature android.permission.INSTALL_PACKAGES signature|privileged android.permission.SEND_RESPOND_VIA_MESSAGE signature|privileged com.android.permission.WHITELIST_BLUETOOTH_DEVICE signature android.permission.ACCESS_FM_RADIO signature|privileged android.permission.MANAGE_VOICE_KEYPHRASES signature|privileged android.permission.SHUTDOWN signature|privileged android.permission.CHANGE_COMPONENT_ENABLED_STATE signature|privileged com.google.android.gms.permission.CHECKIN_NOW signature android.permission.BIND_TV_INPUT signature|privileged android.permission.NFC normal android.permission.MODIFY_PARENTAL_CONTROLS signature|privileged android.permission.INTERNAL_SYSTEM_WINDOW signature android.permission.PROCESS_PHONE_ACCOUNT_REGISTRATION signature|privileged android.permission.RETRIEVE_WINDOW_TOKEN signature android.permission.BIND_WALLPAPER signature|privileged android.permission.START_ANY_ACTIVITY signature android.permission.CAMERA_SEND_SYSTEM_EVENTS signature|privileged com.google.android.apps.now.OPT_IN_WIZARD signature|privileged android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS signature com.google.android.googlequicksearchbox.permission.FINISH_GEL_ACTIVITY signature android.permission.BROADCAST_SMS signature android.permission.CALL_PRIVILEGED signature|privileged android.permission.BIND_INTENT_FILTER_VERIFIER signature android.permission.MANAGE_APP_TOKENS signature android.permission.CHANGE_NETWORK_STATE signature|appop|pre23|preinstalled android.permission.CAPTURE_TV_INPUT signature|privileged com.google.android.apps.fitness.permission.C2D_MESSAGE signature android.permission.MASTER_CLEAR signature|privileged android.permission.PERSISTENT_ACTIVITY normal android.permission.BIND_TELECOM_CONNECTION_SERVICE signature|privileged android.permission.WRITE_SYNC_SETTINGS normal com.google.android.providers.gsf.permission.WRITE_GSERVICES signature|privileged android.permission.SET_DEBUG_APP signature|privileged|development com.google.android.apps.wallet.permission.WALLET_INTERNAL signature android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY signature com.google.android.apps.walletnfcrel.permission.C2D_MESSAGE signature android.permission.RECEIVE_BOOT_COMPLETED normal com.google.android.apps.cloudprint.permission.C2D_MESSAGE signature android.permission.LOOP_RADIO signature|privileged android.permission.GLOBAL_SEARCH_CONTROL signature com.google.android.gms.auth.permission.POST_SIGN_IN_ACCOUNT signature android.permission.PEERS_MAC_ADDRESS signature android.permission.DEVICE_POWER signature com.google.android.providers.settings.permission.READ_GSETTINGS signature com.google.android.gms.cloudsave.BIND_EVENT_BROADCAST signature|privileged com.android.vending.permission.C2D_MESSAGE signature android.permission.SET_TIME_ZONE normal android.permission.REMOVE_TASKS signature com.google.android.googlequicksearchbox.permission.PAUSE_HOTWORD signature|privileged android.permission.EXPAND_STATUS_BAR normal com.android.launcher.permission.UNINSTALL_SHORTCUT normal android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS signature android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS normal android.permission.READ_PROFILE normal android.permission.BIND_VOICE_INTERACTION signature com.google.android.marvin.feedback.permission.TALKBACK signature android.permission.BLUETOOTH normal android.permission.BROADCAST_WAP_PUSH signature android.permission.CHANGE_WIFI_MULTICAST_STATE normal com.google.android.onetimeinitializer.permission.ONE_TIME_INITIALIZED signature android.permission.DVB_DEVICE signature|privileged android.permission.PERFORM_SIM_ACTIVATION signature|privileged com.android.alarm.permission.SET_ALARM normal android.permission.CAPTURE_AUDIO_HOTWORD signature|privileged android.permission.WRITE_MEDIA_STORAGE signature|privileged com.android.voicemail.permission.READ_VOICEMAIL signature|privileged android.permission.SET_ANIMATION_SCALE signature|privileged|development com.google.android.gms.permission.AD_ID_NOTIFICATION normal com.android.vending.setup.PLAY_SETUP_SERVICE signature|privileged android.permission.GET_TASKS normal android.permission.BROADCAST_NETWORK_PRIVILEGED signature|privileged android.permission.ACCESS_SURFACE_FLINGER signature com.google.android.googleapps.permission.ACCESS_GOOGLE_PASSWORD signature android.permission.INTERNET normal android.permission.TV_INPUT_HARDWARE signature|privileged com.android.vending.INTENT_VENDING_ONLY signature android.permission.TRANSMIT_IR normal com.google.android.gms.permission.C2D_MESSAGE signature android.permission.RETRIEVE_WINDOW_CONTENT signature|privileged android.permission.REORDER_TASKS normal com.android.chrome.permission.CHILD_SERVICE signature com.google.android.videos.permission.C2D_MESSAGE signature android.permission.BLUETOOTH_ADMIN normal android.permission.CONTROL_VPN signature|privileged android.permission.UPDATE_DEVICE_STATS signature|privileged android.permission.BLUETOOTH_STACK signature android.permission.BLUETOOTH_MAP signature android.permission.READ_PRECISE_PHONE_STATE signature|privileged android.permission.MANAGE_FINGERPRINT signature|privileged com.google.android.partnersetup.permission.UPDATE_CLIENT_ID signature|privileged android.permission.NET_ADMIN signature com.google.android.gms.permission.GAMES_DEBUG_SETTINGS signature android.permission.CARRIER_FILTER_SMS signature|privileged android.permission.PERFORM_CDMA_PROVISIONING signature|privileged com.google.android.gms.trustagent.permission.TRUSTAGENT_STATE signature android.permission.BIND_CONNECTION_SERVICE signature|privileged android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS signature|installer|verifier android.permission.WRITE_SOCIAL_STREAM normal android.permission.LAUNCH_TRUST_AGENT_SETTINGS signature|privileged android.permission.REGISTER_CALL_PROVIDER signature|privileged android.permission.GET_PACKAGE_SIZE normal android.permission.BIND_VPN_SERVICE signature android.permission.TRUST_LISTENER signature android.permission.ACCOUNT_MANAGER signature android.permission.MANAGE_USB signature|privileged android.permission.ACCESS_ALL_DOWNLOADS signature android.permission.INTERACT_ACROSS_USERS_FULL signature|installer android.permission.BIND_APPWIDGET signature|privileged android.permission.STOP_APP_SWITCHES signature|privileged android.permission.BATTERY_STATS signature|privileged|development com.google.android.gms.permission.INTERNAL_BROADCAST signature android.permission.PACKAGE_USAGE_STATS signature|privileged|development|appop android.permission.WRITE_PROFILE normal android.permission.MOUNT_UNMOUNT_FILESYSTEMS signature|privileged android.permission.GET_ACCOUNTS_PRIVILEGED signature|privileged android.permission.WRITE_SECURE_SETTINGS signature|privileged|development com.android.vending.TOS_ACKED signature|privileged android.permission.SERIAL_PORT signature|privileged android.permission.BIND_NOTIFICATION_LISTENER_SERVICE signature android.permission.CAPTURE_AUDIO_OUTPUT signature|privileged android.permission.BIND_MIDI_DEVICE_SERVICE signature android.permission.MOVE_PACKAGE signature|privileged android.permission.SET_ACTIVITY_WATCHER signature android.permission.STATUS_BAR_SERVICE signature android.permission.READ_SEARCH_INDEXABLES signature|privileged android.permission.NFC_HANDOVER_STATUS signature|privileged android.permission.SCORE_NETWORKS signature|privileged android.permission.DIAGNOSTIC signature android.permission.ACCESS_LOCATION_EXTRA_COMMANDS normal android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE signature|privileged android.permission.READ_PRIVILEGED_PHONE_STATE signature|privileged android.permission.ACCESS_DOWNLOAD_MANAGER signature|privileged android.permission.BROADCAST_STICKY normal android.permission.ASEC_ACCESS signature android.permission.BIND_REMOTE_DISPLAY signature android.permission.BLUETOOTH_PRIVILEGED signature|privileged com.google.android.gms.permission.CAR signature android.permission.SET_ALWAYS_FINISH signature|privileged|development android.permission.HARDWARE_TEST signature com.google.android.videos.permission.INVALIDATE_AUTH_TOKENS signature android.permission.ASEC_CREATE signature com.google.android.apps.enterprise.dmagent.permission.AutoSyncPermission signature|privileged com.google.android.apps.enterprise.dmagent.permission.InvokeDMServicePermission signature android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE signature android.permission.ACCESS_KEYGUARD_SECURE_STORAGE signature com.google.android.launcher.permission.CONTENT_REDIRECT signature android.permission.BIND_JOB_SERVICE signature android.permission.CONFIRM_FULL_BACKUP signature android.permission.CAPTURE_SECURE_VIDEO_OUTPUT signature|privileged android.permission.SET_TIME signature|privileged android.permission.WRITE_APN_SETTINGS signature|privileged com.google.android.providers.settings.permission.WRITE_GSETTINGS signature android.permission.CHANGE_WIFI_STATE normal com.google.android.apps.gcs.RECEIVE_GCS_STATE signature|privileged android.permission.BIND_PACKAGE_VERIFIER signature android.permission.READ_INSTALL_SESSIONS normal android.permission.BIND_ROUTE_PROVIDER signature android.permission.RECEIVE_STK_COMMANDS signature|privileged android.permission.BIND_CARRIER_MESSAGING_SERVICE signature|privileged android.permission.ACCESS_BLUETOOTH_SHARE signature android.permission.PACKAGE_VERIFICATION_AGENT signature|privileged com.google.android.apps.maps.permission.PREFETCH signature android.permission.SET_ORIENTATION signature android.permission.REVOKE_RUNTIME_PERMISSIONS signature|installer|verifier android.permission.MANAGE_USERS signature|privileged com.android.vending.billing.BILLING_ACCOUNT_SERVICE signature|privileged com.google.android.gm.email.permission.ACCESS_PROVIDER signature android.permission.SET_PREFERRED_APPLICATIONS signature android.permission.FLASHLIGHT normal android.permission.DELETE_CACHE_FILES signature|privileged com.google.android.hangouts.START_HANGOUT signature android.permission.SET_WALLPAPER_COMPONENT signature|privileged android.permission.ACCESS_NETWORK_STATE normal android.permission.BIND_CONDITION_PROVIDER_SERVICE signature android.permission.ACCESS_MTP signature|privileged android.permission.DISABLE_KEYGUARD normal android.permission.BACKUP signature|privileged android.permission.PROCESS_CALLLOG_INFO signature|privileged android.permission.CHANGE_CONFIGURATION signature|privileged|development android.permission.USER_ACTIVITY signature|privileged android.permission.LOCAL_MAC_ADDRESS signature|privileged android.permission.READ_LOGS signature|privileged|development com.google.android.apps.maps.permission.C2D_MESSAGE signature android.permission.COPY_PROTECTED_DATA signature android.permission.ASEC_DESTROY signature android.permission.INTERACT_ACROSS_USERS signature|privileged|development android.permission.SET_WALLPAPER normal android.permission.ASEC_RENAME signature android.permission.SET_KEYBOARD_LAYOUT signature android.permission.UPDATE_CONFIG signature|privileged android.permission.ACCESS_NETWORK_CONDITIONS signature|privileged android.permission.READ_DREAM_STATE signature|privileged android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT signature com.google.googlenav.friend.permission.OPT_IN signature com.google.android.launcher.permission.RECEIVE_FIRST_LOAD_BROADCAST signature|privileged android.permission.UPDATE_LOCK signature|privileged android.permission.READ_NETWORK_USAGE_HISTORY signature|privileged android.permission.ACCESS_DRM_CERTIFICATES signature|privileged com.google.android.gsf.permission.C2D_MESSAGE signature com.google.android.googlequicksearchbox.permission.FLUSH_LOGS signature android.permission.READ_INPUT_STATE signature android.permission.KILL_BACKGROUND_PROCESSES normal android.permission.ACCESS_VOICE_INTERACTION_SERVICE signature android.permission.BIND_PRINT_SPOOLER_SERVICE signature android.permission.BIND_DIRECTORY_SEARCH signature|privileged android.permission.WRITE_USER_DICTIONARY normal android.permission.REGISTER_SIM_SUBSCRIPTION signature|privileged android.permission.READ_SYNC_STATS normal android.permission.WRITE_DREAM_STATE signature|privileged android.permission.FREEZE_SCREEN signature android.permission.DOWNLOAD_CACHE_NON_PURGEABLE signature|privileged android.permission.REBOOT signature|privileged android.permission.DISPATCH_NFC_MESSAGE signature|privileged com.google.android.gms.auth.permission.FACE_UNLOCK signature android.permission.MOUNT_FORMAT_FILESYSTEMS signature|privileged android.permission.OEM_UNLOCK_STATE signature android.permission.REGISTER_CONNECTION_MANAGER signature|privileged android.permission.MANAGE_DEVICE_ADMINS signature|privileged android.permission.CLEAR_APP_CACHE signature|privileged android.permission.CHANGE_APP_IDLE_STATE signature com.google.android.gms.auth.permission.GOOGLE_ACCOUNT_CHANGE signature com.google.android.gms.trustagent.framework.model.DATA_ACCESS signature android.permission.BIND_TRUST_AGENT signature android.permission.MANAGE_DOCUMENTS signature android.permission.ACCESS_PDB_STATE signature android.permission.MANAGE_NETWORK_POLICY signature android.permission.BIND_REMOTEVIEWS signature|privileged android.permission.ASEC_MOUNT_UNMOUNT signature android.permission.GRANT_RUNTIME_PERMISSIONS signature|installer android.permission.SET_POINTER_SPEED signature android.permission.CHANGE_BACKGROUND_DATA_SETTING signature com.android.systemui.permission.SELF signature com.android.chrome.TOS_ACKED signature|privileged android.permission.GLOBAL_SEARCH signature|privileged android.permission.NET_TUNNELING signature android.permission.CONNECTIVITY_INTERNAL signature|privileged android.permission.FACTORY_TEST signature android.permission.SET_WALLPAPER_HINTS normal android.permission.MANAGE_MEDIA_PROJECTION signature android.permission.READ_SYNC_SETTINGS normal com.google.android.apps.now.CURRENT_ACCOUNT_ACCESS signature com.google.android.partnersetup.permission.ACCESS_PROVIDER signature com.android.chrome.permission.C2D_MESSAGE signature android.permission.BROADCAST_PACKAGE_REMOVED signature com.google.android.music.store.permission.C2D_MESSAGE signature android.permission.OVERRIDE_WIFI_CONFIG signature|privileged com.android.gallery3d.filtershow.permission.READ signature android.permission.FORCE_STOP_PACKAGES signature|privileged android.permission.MANAGE_CA_CERTIFICATES signature|privileged android.permission.CAPTURE_VIDEO_OUTPUT signature|privileged android.permission.ACCESS_NOTIFICATIONS signature|privileged android.permission.VIBRATE normal com.android.certinstaller.INSTALL_AS_USER signature com.google.android.gsf.permission.CONNECTION signature com.google.android.apps.plus.permission.MAPS_RECEIVE signature android.permission.BIND_ACCESSIBILITY_SERVICE signature android.server.checkin.CHECKIN.permission.C2D_MESSAGE signature android.permission.MANAGE_ACTIVITY_STACKS signature|privileged android.permission.SEND_CALL_LOG_CHANGE signature|privileged android.permission.HDMI_CEC signature|privileged android.permission.BIND_INPUT_METHOD signature android.permission.INVOKE_CARRIER_SETUP signature|privileged android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST signature|privileged android.permission.REMOVE_DRM_CERTIFICATES signature|privileged com.google.android.googleapps.permission.GOOGLE_MAIL_SWITCH signature android.permission.READ_USER_DICTIONARY normal android.permission.FILTER_EVENTS signature android.permission.RECEIVE_EMERGENCY_BROADCAST signature|privileged com.google.android.finsky.permission.GEARHEAD_SERVICE signature|privileged android.permission.MODIFY_NETWORK_ACCOUNTING signature|privileged android.permission.CRYPT_KEEPER signature|privileged android.permission.BIND_NFC_SERVICE signature android.permission.START_PRINT_SERVICE_CONFIG_ACTIVITY signature com.android.voicemail.permission.WRITE_VOICEMAIL signature|privileged android.permission.GET_DETAILED_TASKS signature android.permission.NOTIFY_PENDING_SYSTEM_UPDATE signature|privileged android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK signature|privileged android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS signature|privileged android.permission.ACCESS_WIFI_STATE normal com.google.android.apps.enterprise.dmagent.permission.C2D_MESSAGE signature android.permission.FORCE_BACK signature com.android.chrome.permission.READ_WRITE_BOOKMARK_FOLDERS signature|privileged com.google.android.launcher.permission.RECEIVE_LAUNCH_BROADCASTS signature android.permission.CHANGE_WIMAX_STATE normal android.permission.CAMERA_DISABLE_TRANSMIT_LED signature|privileged android.permission.REQUEST_INSTALL_PACKAGES normal android.permission.CONTROL_INCALL_EXPERIENCE signature|privileged android.permission.MODIFY_PHONE_STATE signature|privileged com.google.android.gm.email.permission.UPDATE_AUTH_NOTIFICATION signature com.google.android.googlequicksearchbox.LAUNCH_FROM_DSP_HOTWORD signature|privileged com.android.launcher.permission.INSTALL_SHORTCUT normal android.permission.BIND_TEXT_SERVICE signature android.permission.STATUS_BAR signature|privileged android.permission.READ_FRAME_BUFFER signature|privileged com.google.android.gms.DRIVE signature android.permission.DUMP signature|privileged|development android.permission.LOCATION_HARDWARE signature|privileged com.google.android.apps.plus.permission.C2D_MESSAGE signature com.google.android.marvin.talkback.permission.LABELING signature com.google.android.googlequicksearchbox.LAUNCH_WITH_RECORDED_AUDIO signature|privileged android.permission.READ_SOCIAL_STREAM normal android.permission.WAKE_LOCK normal android.permission.INJECT_EVENTS signature android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED signature|privileged android.permission.BIND_CHOOSER_TARGET_SERVICE signature android.permission.UPDATE_APP_OPS_STATS signature|privileged|installer com.android.gallery3d.filtershow.permission.WRITE signature android.permission.ACCESS_INPUT_FLINGER signature android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS signature|privileged com.android.vending.billing.ADD_CREDIT_CARD signature|privileged android.permission.SET_SCREEN_COMPATIBILITY signature com.android.vending.billing.IN_APP_NOTIFY.permission.C2D_MESSAGE signature android.permission.MEDIA_CONTENT_CONTROL signature|privileged android.permission.DELETE_PACKAGES signature|privileged com.google.android.calendar.permission.READ_OOBE signature 现在是“正常”。