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:
- Determinar la lista de permisos utilizados por una aplicación instalada en Android
- Android checkCallingOrSelfPermission no devuelve correctamente
- Permiso denegado al escribir en sdCard
- RecoverySystem.installPackage - / cache / recovery / command: open failed: EACCESS (permiso denegado) - falta de permiso después de actualizar Android a 4.3+
- ¿Es posible tener permisos "opcionales" en Android?
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?
- Permisos de archivo en Android
- Google Play detecta nuevos permisos después de usar Android Studio
- android internet no funciona
- ¿Cómo hacer que el permiso de gps sea opcional?
- ¿Por qué no se establecen los permisos de AndroidManifest en mi aplicación?
- ADB obtener un permiso denegado a pesar de correr como root
- No se detecta el dispositivo USB de modo host - ¿Qué archivos son exactamente necesarios?
- No se puede obtener android para conectarse a Internet (permiso denegado)
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
- Android: la barra de progreso en el título de la ventana no se muestra
- Android SDK Content Loader falla con NullPointerException