web-dev-qa-db-ja.com

Android:タブレットのアプリケーションを無効にする

アプリケーションを開発しましたが、タブレット用のアプリケーションを制限したいと思います。

アプリケーションをどのタブレットでも実行してはならないことを意味します。そのために、Androidmenifest.XMLファイルのsupport-screensを次のように指定します。

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

上記も宣言した後

今、私は何をすべきですか。私を提案し、私を導いてください。

21
Manoj Fegde

マニフェストに以下を含めます。

<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="normal" Android:screenDensity="xhdpi" />
    <screen Android:screenSize="normal" Android:screenDensity="xxhdpi" />
    <screen Android:screenSize="normal" Android:screenDensity="xxxhdpi" />
</compatible-screens>
</manifest>

これはあなたを助けます。

15
Optim India

これにより、タブレットでのアクセスが防止されますが、新しい密度バケット(xxhdpiおよびxxxhdpi)が許可され、下位のSDKに対してコンパイルされたプロジェクトでのエラーが回避されます。 AndroidManifest.xml<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="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.2016Nexus-5xをサポートする場合は、この行を追加してください- 420密度のデバイスのように

<screen Android:screenSize="normal" Android:screenDensity="420" />
38
SharkAlley

アプリを携帯電話に制限する場合は、マニフェストの<compatible-screens>タグのみを使用してください。つまり、このように

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

詳細については、チェックしてください アプリの宣言は携帯電話専用です

アプリをタブレットから制限する場合は、<supports-screens>タグを使用しないでください。 公式ドキュメント に明確に記載されています

注意:逆のシナリオで要素を使用し(アプリケーションがより大きな画面と互換性がない場合)、より大きな画面サイズの属性を「false」に設定する場合"の場合、GooglePlayなどの外部サービスはフィルタリングを適用しません。アプリケーションは引き続き大きな画面で使用できますが、実行時に画面に合わせてサイズが変更されることはありません。代わりに、システムはハンドセットの画面サイズをエミュレートします(約320dp x 480dp。詳細については、画面互換モードを参照してください)。アプリケーションが大きな画面にダウンロードされないようにする場合は、前のセクション「アプリの宣言は携帯電話専用」で説明したように、を使用します。

14
Renjith

layout-large、layout-xlargeのレイアウトを作成したかどうかを確認してください。それらが存在する場合、アプリはタブレットで実行されます。存在する場合は、そのレイアウトフォルダーを削除してください。

1
AndroUser