lunes, 6 de mayo de 2013

Android Dev: android.permission un Arma de doble filo.

Quizás me pasa por andar de confiado, o quizás mis muchas visitas a foros de consulta como Stackoverflow no haya notado ese detalle... pero acabo de subir tres versiones al mismo tiempo de mi aplicación puesto que he perdido compatibilidad con nada menos que 300 Dispositivos... vaya... y eso que aumente la compatibilidad de mi API bajandola de la 2.3 a la 2.2 y agregando el SDK 17.
No había notado de la pérdida hasta que intenté probar mi app en un ZTE v791 Android v 2.3.6, menudo susto... había desaparecido del Google Play y no me lo explicaba, siendo una App phonegap se toca muy poco de código nativo...

Caray... algo malo habré hecho. Lo único nuevo en cuanto a prestaciones es que había agregado los siguientes Permission:

  • android.permission.BLUETOOTH
  • android.permission.BLUETOOTH_ADMIN
  • android.permission.FLASHLIGHT

y sin querer, sin notar, sin saber.... había pedido dos requisitos más a los dispositivos:

  1. Bluetooth.
  2. flashlight.

Creía equivocadamente que estos requisitos solo se piden con la etiqueta:

uses-feature

Pero nó!!!!!!.... al crear un permiso nuevo, solicitas al Android Market que los dispositivos a los que puedan instalarse tengan esos requisitos.

No necesariamente debes declararlo.... afortunadamente me he dado  una googleada y después de unos minutos encontré la solución: Hacerlo opcional.

Cuando haces un : android.permission.BLUETOOTH solicitas el requisitos, esto lo debes contrarrestar con una anotación uses-feature : uses-features android:name="android.hardware.bluetooth" android:required="false" así le dices al Android Market (Google Play) que pides el permiso para utilizar ese hardware, pero que no es necesario que el Dispositivo lo tenga.

Lo peor que pueda pasar es que tengas que validar la existencia del Hardware antes de usarlo... cosa que debes hacer.

Mi App quedó así:

Con 800 dispositivos más... opcional pero funcional.... :D

Eso es todo y como siempre les deseo mucha suerte en la carrera por el mercado móvil.
@pata_de_jaguar




No hay comentarios: