18

Я разработал приложение, теперь я хочу ограничить приложение планшета.Android: отключить приложение для планшета

Означает, что приложение не должно работать на любых планшетах. Для этого я указываю подставок-экраны в Androidmenifest.XML файл как:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.abc.xyz" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="5" 
    android:targetSdkVersion="17" 
    android:maxSdkVersion="17" /> 

<supports-screens 
    android:smallScreens="true" 
    android:normalScreens="true" 
    android:largeScreens="false" 
    android:xlargeScreens="false" 
    android:resizeable="true" 
    android:anyDensity="true" /> 

<uses-permission android:name="android.permission.SEND_SMS" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

<application 
    android:icon="@drawable/appicon" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Black.NoTitleBar" 
    android:allowBackup="true" > 

    <activity 
     android:name="com.abc.xyz.activities.hello" 
     android:label="@string/title_activity_hello" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity>   
</application> 

</manifest> 

Теперь вопрос заключается в том, что:

Приложение работает на планшете

android:largeScreens="false" 
android:xlargeScreens="false" 

После объявления выше слишком.

Теперь что мне делать. Пожалуйста, предложите мне и посоветуйте мне.

+0

как вы испытали это ??? загрузив его на игровом магазине ?? – Akram

+0

Пожалуйста, проверьте эту ссылку, которая может вам помочь: http://developer.android.com/guide/topics/manifest/supports-screens-element.html – Arshu

+0

Акрам: Да, я протестировал его. Он отображается для вкладки. Я проверил на вкладке. –

ответ

13

Включить следующее в вашем манифесте:

<manifest ... > 
<compatible-screens> 
    <!-- all small size screens --> 
    <screen android:screenSize="small" android:screenDensity="ldpi" /> 
    <screen android:screenSize="small" android:screenDensity="mdpi" /> 
    <screen android:screenSize="small" android:screenDensity="hdpi" /> 
    <screen android:screenSize="small" android:screenDensity="xhdpi" /> 
    <screen android:screenSize="small" android:screenDensity="xxhdpi" /> 
    <screen android:screenSize="small" android:screenDensity="xxxhdpi" /> 
    <!-- all normal size screens --> 
    <screen android:screenSize="normal" android:screenDensity="ldpi" /> 
    <screen android:screenSize="normal" android:screenDensity="mdpi" /> 
    <screen android:screenSize="normal" android:screenDensity="hdpi" /> 
    <screen android:screenSize="small" android:screenDensity="xhdpi" /> 
    <screen android:screenSize="small" android:screenDensity="xxhdpi" /> 
    <screen android:screenSize="small" android:screenDensity="xxxhdpi" /> 
</compatible-screens> 
</manifest> 

Это поможет вам.

+3

Не забудьте добавить xxhdpi, который был добавлен в API 16 – Eduard

+0

@EduardK. но большинство устройств xxhdpi относятся к вкладкам. так зачем включать это? – Satyam

+4

@ Satyam, потому что есть устройства xxhdpi, которые не являются планшетами, такими как Nexus 5. – Eduard

1

проверьте, если вы сделали макет для макета большой, макет-xlarge. если они присутствуют, ваше приложение будет работать на планшете, удалите эту папку макета, если она есть.

14

Если вы хотите ограничить приложение на мобильные телефоны, используйте только тег <compatible-screens> в манифесте. i.e.like этого

<manifest ... > 
    <compatible-screens> 
     <!-- all small size screens --> 
     <screen android:screenSize="small" android:screenDensity="ldpi" /> 
     <screen android:screenSize="small" android:screenDensity="mdpi" /> 
     <screen android:screenSize="small" android:screenDensity="hdpi" /> 
     <screen android:screenSize="small" android:screenDensity="xhdpi" /> 
     <!-- all normal size screens --> 
     <screen android:screenSize="normal" android:screenDensity="ldpi" /> 
     <screen android:screenSize="normal" android:screenDensity="mdpi" /> 
     <screen android:screenSize="normal" android:screenDensity="hdpi" /> 
     <screen android:screenSize="normal" android:screenDensity="xhdpi" /> 
    </compatible-screens> 
    ... 
    <application ... > 
     ... 
    <application> 
</manifest> 

Для получения дополнительной информации ознакомьтесь Declaring an App is Only for Handsets

Вы не должны использовать <supports-screens> тега, если вы хотите, чтобы ограничить приложение от таблеток. Это ясно сказано в official doc

Внимание: Если вы используете элемент для обратной сценария (если приложение не совместимо с большими экранами) и установить больший размер экрана атрибуты «ложь» , то внешние службы , такие как Google Play, не применяют фильтрацию. Ваша заявка по-прежнему будет доступна для больших экранов, но при ее запуске она будет не изменять размер экрана. Вместо этого система будет эмулировать размер экрана телефона (около 320dp x 480dp; см. «Совместимость экрана Режим для получения дополнительной информации»). Если вы хотите, чтобы ваше приложение было загружено на большие экраны, используйте, как , обсужденный в предыдущем разделе о объявлении приложения только для Трубки.

36

Это предотвращает доступ на таблетках, но позволяет новые ковши плотности (xxhdpi и xxxhdpi) и позволяет избежать ошибок на проектах, которые скомпилированы с более низким SDKs. Он должен быть прямым потомком <manifest> элемента в AndroidManifest.xml

<compatible-screens> 
    <!-- all small size screens --> 
    <screen android:screenSize="small" android:screenDensity="ldpi" /> 
    <screen android:screenSize="small" android:screenDensity="mdpi" /> 
    <screen android:screenSize="small" android:screenDensity="hdpi" /> 
    <screen android:screenSize="small" android:screenDensity="xhdpi" /> 
    <screen android:screenSize="small" android:screenDensity="480" /> 
    <screen android:screenSize="small" android:screenDensity="640" /> 

    <!-- all normal size screens --> 
    <screen android:screenSize="normal" android:screenDensity="ldpi" /> 
    <screen android:screenSize="normal" android:screenDensity="mdpi" /> 
    <screen android:screenSize="normal" android:screenDensity="hdpi" /> 
    <screen android:screenSize="normal" android:screenDensity="xhdpi" /> 
    <screen android:screenSize="normal" android:screenDensity="480" /> 
    <screen android:screenSize="normal" android:screenDensity="560" /> 
    <screen android:screenSize="normal" android:screenDensity="640" /> 
</compatible-screens> 

Update 8.8.2016 Добавить эту строку, если вы хотите поддерживать Nexus-5x-подобные устройства с 420 плотностью

<screen android:screenSize="normal" android:screenDensity="420" /> 
+1

+1 для упоминания xxhdpi и xxxhdpi – Markus

+1

Мне не хватало всех видов устройств, это фиксировало это! Благодаря! –

+0

Спасибо за обновление Paul! – SharkAlley

Смежные вопросы