without top ten optimizer for cleaner clean best apps app actualizar android permissions

top - android.permission.CALL_PHONE para tabletas



clean android no ads (5)

Estoy desarrollando una aplicación y en el manifiesto tengo:

<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>

Cuando hago clic en el botón para ejecutar este código:

Intent intentcall = new Intent(); intentcall.setAction(Intent.ACTION_CALL); intentcall.setData(Uri.parse("tel:" + phonenumber)); // set the Uri startActivity(intentcall);

Funcionará bien en los teléfonos, y en las tabletas aparece con una pantalla donde puede ver o agregar el número a los contactos. Sin embargo, si conservo el permiso en el manifiesto, no está disponible para tabletas en el mercado. ¿Cómo puedo mantener el comportamiento del código y aún así mostrarlo en el mercado para tabletas y teléfonos?


De google docs:

Los elementos declarados son solo informativos, lo que significa que el sistema Android no comprueba la compatibilidad de funciones coincidentes en el dispositivo antes de instalar una aplicación.

el uso es solo para google play


En el AndroidManifest necesitas:

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

El permiso CALL_PHONE implica que se requiere telefonía, pero si especifica que no es así, no se filtrará.


En lugar de agregar un usuario con el identificador ACTION_CALL , cámbielo a ACTION_INSERT_OR_EDIT .

También necesitará estos permisos, en lugar del permiso CALL_PHONE :

<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission> <uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>

Echa un vistazo a esta pregunta relacionada:

no puede encontrar la aplicación en el mercado


En relación con "uses-feature" y su falla, ¿está comprobando que la telefonía esté disponible antes de realizar la llamada? Es posible que necesite hacer ese paso adicional para el caso cuando la aplicación está en tabletas. Todo lo que dices en el manifiesto es que la función no es obligatoria. Probablemente dependa de ti para implementar la lógica alrededor de eso.


Intenta usar Intent.ACTION_DIAL en lugar de Intent.ACTION_CALL.

Por ejemplo:

try { Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phone_number)); startActivity(intent); } catch (Exception e) { //TODO smth }

Y en este caso, puede eliminar completamente estas etiquetas de AndroidManifest.xml:

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