Permiso de Android, requerido = "falso", falla

Mi aplicación proporciona al usuario opcional acceso a SMS y llamadas telefónicas. He usado:

 <uses-permission android:name="android.permission.READ_PHONE_STATE" android:required="false"></uses-permission>
 <uses-permission android:name="android.permission.SEND_SMS" android:required="false"></uses-permission>
 <uses-permission android:name="android.permission.CALL_PHONE" android:required="false"></uses-permission>

Google Play no expone esta aplicación a dispositivos que no tienen acceso a la red celular. Parece que el parámetro required = false no está haciendo su trabajo.

¿Es esto un error? ¿Hay algo más que pueda hacer?

preguntado el 22 de mayo de 12 a las 19:05

3 Respuestas

¿Por qué está poniendo el parámetro requerido dentro de un permiso? El parámetro android:required se usa cuando declaras una característica, afaik... Por ejemplo:

<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" />

Creo que lo que querías hacer es agregar uses-feature declaraciones con android:required="false".

Utilice esta tabla para actualizar su manifiesto: http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions-features

<uses-feature android:name="android.hardware.telephony" android:required="false" />

contestado el 22 de mayo de 12 a las 19:05

porque algunas características de uso hacen que Google Play genere permisos de uso que afectan el filtrado de algunos dispositivos. énfasis en algunos. - Lassi Kinnunen

@IncrediApp Gracias por compartir el enlace. Esa tabla tiene un número limitado de asignaciones de características de permisos. ¿Qué pasa con los permisos en el manifiesto que no se enumeran en la tabla de su enlace? - amorfordroid

@LassiKinnunen quieres decir lo contrario: algunos uses-permissons son traducidos por google play a un correspondiente uses-feature automáticamente, vea el enlace provisto en la respuesta - xuiqzy

Puede ver todos los permisos en la pestaña de permisos en el AndroidManifest.xml archivo.

Respondido el 07 de enero de 15 a las 13:01

No necesitas usar la propiedad android:required in <uses-permission solo funciona para <uses-feature, ver la definición de

característica de usos : Para controlar el filtrado, siempre declare explícitamente las funciones de hardware en los elementos, en lugar de confiar en Google Play para "descubrir" los requisitos en <uses-permission> elementos. Luego, si desea deshabilitar el filtrado para una función en particular, puede agregar un android:required="false" atribuye a la declaración.

esta es la lista de permisos que implican funciones de hardware:

https://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions-features

Basado en sus elementos:

probablemente necesite agregar solo:

<uses-feature android:name="android.hardware.telephony" android:required="false" />

contestado el 17 de mayo de 16 a las 15:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.