18

Opracowałem aplikację, Teraz chcę ograniczyć aplikację do tabletu.Android: Wyłącz aplikację dla tabletu

Oznacza, że ​​aplikacja nie powinna działać na żadnych tabletach. Aby to określić wsparciu ekrany w pliku Androidmenifest.XML jak:

<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> 

Teraz problemem jest to, że:

aplikacja jest uruchomiona na tablecie

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

Po zadeklarowaniu powyżej także.

Co teraz powinienem zrobić. Proszę, zasugeruj mi i poprowadź mnie.

+0

jak testowałem to ???, przesyłając go na sklepie gry ?? – Akram

+0

Proszę sprawdzić ten link, może to pomóc: http://developer.android.com/guide/topics/manifest/supports-screens-element.html – Arshu

+0

Akram: Tak, przetestowałem to. Jest widoczny dla karty. Testowałem z karty. –

Odpowiedz

13

Dołącz następujący w swoim manifeście:

<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> 

to pomoże.

+3

Nie zapomnij dodać xxhdpi, który został dodany w API 16 – Eduard

+0

@EduardK. ale większość urządzeń xxhdpi należy do Tabs. więc dlaczego to uwzględnić? – Satyam

+4

@Satyam, ponieważ istnieją urządzenia xxhdpi, które nie są tabletami, takie jak Nexus 5. – Eduard

1

Proszę sprawdzić, czy wykonano układ układu - duży, layout-xlarge. jeśli są obecne, Twoja aplikacja będzie działać na tablecie, usuń ten folder układu, jeśli jest obecny.

14

Jeśli chcesz ograniczyć aplikację do słuchawek, użyj tylko znacznika <compatible-screens> w manifeście. i.e.like tym

<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> 

Aby uzyskać więcej informacji sprawdź Declaring an App is Only for Handsets

Nie należy stosować tag <supports-screens>, jeśli chcesz ograniczyć aplikację z tabletek. To jest wyraźnie wymienione w official doc

Uwaga: Jeśli używasz elementu na odwrotnej scenariusza (gdy aplikacja nie jest kompatybilna z większymi ekranami) i ustawić większy rozmiar ekranu atrybutów „false” , a następnie zewnętrzne usługi, takie jak Google Play, nie stosują filtrowania. Twoja aplikacja będzie nadal dostępna dla większych ekranów, ale po uruchomieniu nie będzie zmieniać rozmiaru, aby dopasować ją do ekranu. Zamiast tego system będzie emulował rozmiar ekranu słuchawki telefonu (około 320 x pik x 480 dpi, patrz Tryb zgodności z ekranem , aby uzyskać więcej informacji). Jeśli chcesz uniemożliwić pobieranie aplikacji na większe ekrany, użyj, jako omówionej w poprzedniej sekcji o Deklarowaniu aplikacji tylko dla telefonów .

36

Uniemożliwia dostęp w tabletkach, ale umożliwia nowe wiadra gęstości (xxhdpi i xxxhdpi) i pozwala uniknąć błędów w projektach, które są skompilowane na niższych SDK. Powinien on być bezpośrednim potomkiem elementu <manifest> w 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> 

Aktualizacja 8.8.2016 Dodaj tę linię, jeśli chcesz obsługiwać urządzeń Nexus-5x-420 jak z gęstością

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

+1 za wzmiankę o xxhdpi i xxxhdpi – Markus

+1

Brakowało mi wszystkich urządzeń, to naprawiłem! Dzięki! –

+0

Dzięki za aktualizację Paul! – SharkAlley

Powiązane problemy