Android.permission.CALL_PHONE para tabletas

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 aparecerá con una pantalla donde podrá ver o agregar el número a los contactos. Sin embargo, si conservo el permiso en el manifiesto, no está disponible para tablets en el mercado. ¿Cómo puedo mantener el comportamiento del código y todavía tenerlo en el mercado para tablets y teléfonos?

En cuanto a "usos-característica" y se estrelló – ¿está comprobando que la telefonía está disponible antes de hacer la llamada? Podría ser que usted necesita para hacer ese paso extra para el caso cuando la aplicación está en tabletas. Todo lo que está diciendo en el manifiesto es que la característica no es necesaria. Probablemente se basa en que realmente implementar la lógica en torno a eso.

En el AndroidManifest necesitas:

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

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

Intente utilizar 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 quitar completamente estas etiquetas de AndroidManifest.xml:

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

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

También necesitarás 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

De google docs:

Los elementos declarados son sólo informativos, lo que significa que el propio sistema Android no comprueba si hay compatibilidad de características coincidentes en el dispositivo antes de instalar una aplicación

El uso es solo para google play

  • Cómo conceder el permiso de MODIFY_PHONE_STATE para las aplicaciones que se ejecutan en Gingerbread
  • ¿Cómo puede una aplicación Android acceder a tonos de llamada sin permiso?
  • Negación de permiso de Android si otra aplicación no se instala primero
  • Definir un permiso para que aplicaciones de terceros se usen en Android
  • ADB obtener un permiso denegado a pesar de correr como root
  • Init.rc no iniciar mi servicio en el primer arranque después del flash
  • Java socket IOException - permiso denegado
  • No se puede eliminar directorio form / storage / sdcard0
  • Permiso de manifiesto en Android Studio
  • Cómo recopilar stacktrace nativo sin un permiso de lectura READ_LOGS desde el principio?
  • Permiso personalizado para la aplicación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.