Niveles de protección de los permisos de Android 18 y 50

Cuando hago un volcado de todos los permisos en todas las aplicaciones en un Nexus 7 obtengo (como esperaba) permisos con niveles de protección 0 (NORMAL), 1 (PELIGROSO), 2 (FIRMA). Nada está registrando menos de 3 (SIGNATURE_OR_SYSTEM) *.

Pero también hay un montón de permisos cuyo nivel de protección se establece en '18' y algunos que son '50'.

No encuentro ninguna documentación sobre lo que representan estos valores. ¿Alguien sabe?

* No registra nada debajo de 3.

Estos son los que se registraron:

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 

Acabo de ver una vieja pregunta sin respuesta. A pesar de que ya puede obtener su respuesta, voy a responder de todos modos. Puede ayudar a otros. 🙂

También hay un montón de permisos cuyo nivel de protección se establece en '18' y algunos que son '50'.

El siguiente código se recupera de PermissionInfo.java en Android Fuente:

 /** * 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; 

Así que si hay un permiso de firma / sistema, el nivel sería 18 (0x10 | 0x2). Si el uso del permiso usado para las herramientas especiales del desarrollo, sería 50 (0x10 | 0x20 | 0x2).

No encuentro ninguna documentación sobre lo que representan estos valores. ¿Alguien sabe?

Como respondí en una pregunta existente , puede comprobar el nivel de protección y la descripción de estos permisos en framework/base/core/res/AndroidManifest.xml y framework/base/data/etc/platform.xml . Puedo publicar algunos de ellos aquí para su referencia.

 <!-- 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" /> 

Si hay una anotación @hide en ese bloque xml, no puede encontrar ningún recurso de la documentación acerca de este permiso.

El permiso de desarrollo 0x20 que compone los que se está refiriendo son un conjunto de permisos introducidos por Google para ser utilizados durante el desarrollo de Android y nunca son concedidos por el PackageManager automáticamente. Para poder usarlos debes conceder usando el adb shell pm grant permission .

Puedes ver el código que hace eso y el cambio que introdujo Google en este 02/21/2012 commit .

  • onItemClick, Intent, errores de startActivity
  • Diferencia entre ActionBarSherlock y ActionBar Compatibilidad
  • Juegos de sincronización de Java: sincronizados && wait && notify
  • Utilizando una casilla de verificación con un enfoque en blanco falso, impide que los clics de vista de lista
  • No se pueden leer las líneas de un archivo de texto
  • Android - No se puede instanciar la actividad - ClassNotFound - Falla en un eclipse pero no en otro
  • Cómo forzar la actualización en una aplicación cuando los cambios en el backend requieren una aplicación actualizada
  • Objeto girado correspondiente a valores numéricos
  • ¿Pueden las compilaciones del mismo código fuente producir funcionalmente diferentes ejecutables?
  • Problemas con ANDROID_ID
  • Error al utilizar notifyDataSetChanged en el adaptador de matriz de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.