Aunque es una práctica no recomendada por Google, en ciertas ocasiones podemos necesitar que una aplicación esté destinada al uso exclusivo en determinados tipos de dispositivos, ya sea para un Smartphone o una Tablet. Para estos casos tenemos la opción de restringir para qué dispositivos está destinada la aplicación a través del manifiest.xml de nuestro proyecto, utilizando la etiqueta <compatible-screens> y en su interior definir tantas pantallas como necesitemos, teniendo en cuenta que para cada tamaño de pantalla también tenemos que indicar a qué densidades queremos dar soporte.
Esto quiere decir que, si por ejemplo queremos dar soporte a pantallas de tamaño large (que hacen referencia a las tablets de 7′) en realidad deberemos indicar 4 pantallas distintas en el manifiest.xml, una por cada densidad: ldpi, mdpi, hdpi y xhdpi. Si quisieramos además dar soporte a pantallas de 10′ haríamos lo mismo con las de tamaño xlarge, con lo que el manifiest.xml contendría las siguientes etiquetas:
<compatible-screens> <screen android:screenDensity="ldpi" android:screenSize="large" /> <screen android:screenDensity="mdpi" android:screenSize="large" /> <screen android:screenDensity="hdpi" android:screenSize="large" /> <screen android:screenDensity="xhdpi" android:screenSize="large" /> <screen android:screenDensity="ldpi" android:screenSize="xlarge" /> <screen android:screenDensity="mdpi" android:screenSize="xlarge" /> <screen android:screenDensity="hdpi" android:screenSize="xlarge" /> <screen android:screenDensity="xhdpi" android:screenSize="xlarge" /> </compatible-screens>
Por otra parte, si lo que nos interesa es dar soporte a pantallas de smartphones, indicaremos las pantallas para tamaños small y normal:
<compatible-screens> <screen android:screenDensity="ldpi" android:screenSize="small" /> <screen android:screenDensity="mdpi" android:screenSize="small" /> <screen android:screenDensity="hdpi" android:screenSize="small" /> <screen android:screenDensity="xhdpi" android:screenSize="small" /> <screen android:screenDensity="ldpi" android:screenSize="normal" /> <screen android:screenDensity="mdpi" android:screenSize="normal" /> <screen android:screenDensity="hdpi" android:screenSize="normal" /> <screen android:screenDensity="xhdpi" android:screenSize="normal" /> </compatible-screens>
Un error que he encontrado en múltiples foros y blogs es la tendencia a definir si es un smartphone o una tablet indicando en el manifiest.xml que la aplicación requiere que el hardware del sistema contenga la propiedad telephony:
<uses-feature android:name="android.hardware.telephony" android:required="true" />
Esta propiedad indica que requiere que el sistema tenga la propiedad de teléfono, y parece lógico pues lo que queremos es que sólo se pueda utilizar nuestra aplicación en smartphones. Sin embargo presenta un fallo, debido a la ambigüedad de nombres, y es que en realidad lo que quiere decir es que requiere que el sistema tenga capacidad de admitir una sim, para recibir señal telefónica.
Si bien aún puede seguir pareciendo lógico utilizar este método, no podemos olvidar el detalle de que hoy en día existen múltiples modelos de tablet que también incorporan sim y que por lo tanto cumplirían este requisito, por lo que serían aptas para instalar nuestra aplicación cuando en realidad no es nuestro objetivo.
Latest posts by IAvilaE (see all)
- Programación Android, Cómo usar SwipeRefreshLayout - 26 April 2015
- Programación Android, Gson – Librería para parsear documentos JSON - 13 February 2015
- Programación Android, Cómo usar múltiples Fragments II - 24 January 2015
Buenísimo. E estado buscando la manera de eliminar facebook de mi tablet, al igual que twitter y skype. Pero sacarlos de raíz. Sabes si se puede hacer eso? si se puede acceder al sistema de una tablet 7´ y eliminar estos
Para eso tienes que rootear el dispositivo e instalar alguna aplicación que permita eliminar aplicaciones de sistema.