web-dev-qa-db-ja.com

アプリをAndroid電話のみに制限する方法

こんにちは私はユーザーをAndroid電話のみにターゲティングしています。ファブレットやタブレットではなく、Android電話にインストールするようにアプリを制限したいと思います。

Google Playアプリがテーブルとファブレットにアプリを表示しないように、AndroidManifest.xmlで適用する必要のある構成は何ですか。

前もって感謝します。

14
N Sharma

引用 ドキュメント

システムは通常、大画面に合わせてアプリケーションをスケーリングするため、大画面からアプリケーションをフィルタリングする必要はありません。 画面の独立性に関するベストプラクティス に従う限り、アプリケーションはタブレットなどの大画面で適切に機能するはずです。ただし、アプリケーションを適切にスケールアップできない場合や、画面構成が異なる2つのバージョンのアプリケーションを公開することにした場合があります。このような場合、 <compatible-screens> 要素を使用して、画面サイズと密度の組み合わせに基づいてアプリケーションの配布を管理できます。 Google Playなどの外部サービスは、この情報を使用してアプリケーションにフィルタリングを適用します。これにより、互換性を宣言する画面構成を持つデバイスのみがアプリケーションをダウンロードできます。

<compatible-screens>では、サポートしているすべての画面サイズと密度をホワイトリストに登録する必要があります(毎年新しい密度が取得されます)。従来の画面サイズのバケット(smallnormallargexlarge)に限定されます。ドキュメントのサンプルには、いくつかの密度がありません。

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

tvdpixxhdpi、およびxxxhdpiデバイスをサポートする場合は、要素を追加する必要があります。

引用 <compatible-screens>のドキュメント

注意:通常、このマニフェスト要素は使用しないでください。この要素を使用すると、リストにない画面構成のデバイスがある場合にユーザーがアプリケーションをインストールできないようにすることで、アプリケーションの潜在的なユーザーベースを大幅に減らすことができます。アプリケーションが特定の画面構成で完全に機能しない場合は、最後の手段としてのみ使用してください。この要素を使用する代わりに、複数の画面をサポートするためのガイドに従って、さまざまな画面サイズと密度の代替レイアウトとビットマップを使用して複数の画面をスケーラブルにサポートする必要があります。

また、「ファブレット」などのマーケティング用語は明確に定義されていないため、アプリがファブレットであると思われるデバイスや、他の誰かがファブレットであると考えるデバイスで出荷される可能性があることに注意してください。

7
CommonsWare

Nexus 5X、Nexus 6P、Samsung Galaxy S6などの新しいデバイスが高密度であるため、マニフェストを次のように調整する必要がありました。

<compatible-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="420" />
    <screen Android:screenSize="small" Android:screenDensity="480" />
    <screen Android:screenSize="small" Android:screenDensity="560" />
    <screen Android:screenSize="small" Android:screenDensity="640" />
    <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="420" />
    <screen Android:screenSize="normal" Android:screenDensity="480" />
    <screen Android:screenSize="normal" Android:screenDensity="560" />
    <screen Android:screenSize="normal" Android:screenDensity="640" />
    <screen Android:screenSize="large" Android:screenDensity="ldpi" />
    <screen Android:screenSize="large" Android:screenDensity="mdpi" />
    <screen Android:screenSize="large" Android:screenDensity="hdpi" />
    <screen Android:screenSize="large" Android:screenDensity="xhdpi" />
    <screen Android:screenSize="large" Android:screenDensity="420" />
    <screen Android:screenSize="large" Android:screenDensity="480" />
    <screen Android:screenSize="large" Android:screenDensity="560" />
    <screen Android:screenSize="large" Android:screenDensity="640" />
</compatible-screens>
24
Display name

別の方法は、Android.hardware.telephony機能をテストすることです。

<uses-feature Android:name="Android.hardware.telephony" Android:required="true" />

これにより、アプリは電話に限定されます。もちろん、ファブレットはそれに含まれますが、(IMHO)絶えず変化する画面解像度のアプローチよりも優れたソリューションになります。

13
baash05

それは本当にあなたが電話/ファブレットについて何を考えているかに依存します。

公式ガイド がありますが、これは私よりもはるかにわかりやすく説明されていますが、基本的には、次の方法でアプリを携帯電話デバイスのみに制限できます。

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" />
        <!-- 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>
0
Simon Marquis