it-swarm.com.de

Warum wird meine App in Google Play nicht auf Tablets angezeigt?

Ich habe gerade meine App für Handys und Tablets veröffentlicht, sie wird jedoch nicht in Google Play für Tablets angezeigt.

Auf Nexus 7 und Asus eeeePad geprüft

Das habe ich in meiner Manifestdatei

<compatible-screens>
    <!--no small size screens -->

    <!--Only hdpi and xhdpi for normal size screens -->
    <screen Android:screenSize="normal" Android:screenDensity="mdpi" />
    <screen Android:screenSize="normal" Android:screenDensity="hdpi" />
    <screen Android:screenSize="normal" Android:screenDensity="xhdpi" />

    <!-- all large size screens -->
    <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" />

    <!-- all xlarge size screens -->
    <screen Android:screenSize="xlarge" Android:screenDensity="ldpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="mdpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="hdpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="xhdpi" />
</compatible-screens>

benutzt-SDK-Tag

<uses-sdk Android:minSdkVersion="8" Android:targetSdkVersion="11" />

berechtigungen

<uses-permission Android:name="com.Android.vending.BILLING" />
<uses-permission Android:name="Android.permission.CAMERA" />
<uses-permission Android:name="Android.permission.VIBRATE" />
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission Android:name="Android.permission.READ_PHONE_STATE" />
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.RECEIVE_SMS" />
<uses-permission Android:name="Android.permission.RECORD_AUDIO" />
<uses-permission Android:name="Android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission Android:name="Android.permission.READ_CONTACTS" />
<uses-permission Android:name="Android.permission.WRITE_CONTACTS" />
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission Android:name="Android.permission.GET_ACCOUNTS" />
<uses-permission Android:name="Android.permission.BROADCAST_STICKY" />
<uses-permission Android:name="Android.permission.RECEIVE_BOOT_COMPLETED"/>
<permission Android:name="com.myapp.something.permission.C2D_MESSAGE" Android:protectionLevel="signature" />

Nach dem expliziten Hinzufügen von USE-Feature-Tag zu false wurde es für Asus eeeePad Tablet angezeigt, aber für Nexus 7 wurde es immer noch nicht angezeigt. Hier ist, was ich in der Entwicklerkonsole sehe

Diese Anwendung ist nur für Geräte mit diesen Funktionen verfügbar, wie in Ihrem Anwendungsmanifest definiert Bildschirmdichte: LARGE,MDPI LARGE,HDPI LARGE,LDPI LARGE,XHDPI XLARGE,MDPI XLARGE,HDPI XLARGE,LDPI XLARGE,XHDPI NORMAL,MDPI NORMAL,HDPI NORMAL,XHDPI Erforderliche Gerätefunktionen

Android.hardware.screen.portrait
Android.hardware.touchscreen
38
Saqib

Zum Schluss funktionierte das Hinzufügen eines speziellen Falls für Nexus 7 mit in <compatible-screens>-Tag für mich. Wie Nexus 7 hat tvdpi Dichte

<compatible-screens>
    <!--no small size screens -->


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

    <!-- all large size screens -->
    <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" />

    <!-- all xlarge size screens -->
    <screen Android:screenSize="xlarge" Android:screenDensity="ldpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="mdpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="hdpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="xhdpi" />

    <!-- Special case for Nexus 7 -->
    <screen Android:screenSize="large" Android:screenDensity="213" />

</compatible-screens>

AKTUALISIEREN:

Für xxhdpi-Geräte können Sie 480 als int-Wert verwenden

     <screen Android:screenSize="normal" Android:screenDensity="480" />
     <screen Android:screenSize="large" Android:screenDensity="480" />
     <screen Android:screenSize="xlarge" Android:screenDensity="480" />`
40
Saqib

Diese Seite identifiziert Ihr Problem. 

Wenn Sie <uses-feature> anstelle von <uses-permission> verwenden, wird Ihre Anwendung nicht von Market herausgefiltert, Sie erwarten jedoch, dass Sie mit Geräten umgehen, die diese Funktion auf Codeebene nicht unterstützen.

Für alle Berechtigungen auf dieser Seite können Sie die Filterung basierend auf dem implizierten Feature deaktivieren, indem Sie das implizierte Feature explizit in einem <uses-feature>-Element mit einem Android:required="false"-Attribut deklarieren. Wenn Sie beispielsweise alle auf der CAMERA-Berechtigung basierenden Filter deaktivieren möchten, fügen Sie der Manifestdatei diese Deklaration hinzu:

<uses-feature Android:name="Android.hardware.camera" Android:required="false" />

Wenn Sie jedoch <uses-permission> angeben, werden alle Geräte gefiltert, die keinen Zugriff auf diese Funktion haben.

33
Erol

Ich glaube, der Schlüssel liegt in Ihren Berechtigungen. Mit der Aussage, dass Ihre App RECEIVE_SMS und READ_PHONE_STATE verwendet, verwendet Google Play Geräte zum Herausfiltern von Geräten, die diese Vorgänge nicht ausführen können (Tablets), da sie der Meinung ist, dass Ihre App diese Berechtigungen benötigt, um funktionieren zu können. Laut der Android-Entwicklerseite: 

Um zu verhindern, dass diese Apps unbeabsichtigt zur Verfügung gestellt werden, geht Google Play davon aus, dass bestimmte hardwarebezogene Berechtigungen angeben, dass die zugrundeliegenden Hardwarefunktionen standardmäßig erforderlich sind. Für die Instanz müssen Anwendungen, die Bluetooth verwenden, das anfordern BLUETOOTH Berechtigung in einem Element - Bei Legacy-Apps geht Google Play davon aus, dass die Berechtigungsdeklaration bedeutet, dass die zugrunde liegende Android.hardware.bluetooth-Funktion für die Anwendung erforderlich ist diese Funktion. "

Sehen Sie sich auch folgendes an:

Telefonie CALL_PHONE Android.hardware.telephony CALL_PRIVILEGED Android.hardware.telephony MODIFY_PHONE_STATE Android.hardware.telephony PROCESS_OUTGOING_CALLS Android.hardware.telephony READ_SMS Android.hardware.telephony RECEIVE_SMS Android.hardware.telephony RECEIVE_MMS Android.hardware.telephony RECEIVE_WAP_Push Android.hardware.telephony SEND_SMS Android.hardware.telephony WRITE_APN_SETTINGS Android.hardware.telephony WRITE_SMS Android.hardware.telephony

Sie haben RECEIVE_SMS und READ_PHONE_STATE, so dass Sie automatisch Android.hardware.telephony haben. Sie können dies beheben, indem Sie tun 

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

All dies wird ausführlicher erklärt hier .

19
ninge

Ich muss alle drei dieser Dinge tun, damit Nexus 7 funktioniert. Wenn Sie Ihren APK hochgeladen haben, können Sie die Einstellung überprüfen, indem Sie zunächst den neuen APK aktivieren, zum Produktdetail gehen und nach unterstützten Geräten suchen. Wenn Nexus 7 aufgrund Ihrer Manifest-Einstellungen nicht unter "Nicht unterstützte Geräte" gefunden wird, sind Sie in Ordnung.

Hinweis: Sobald Sie Ihre apk hochgeladen haben, übersetzt Google Play die Dichte 213 in tvdpi. Nicht sicher, warum das Eclipse-Manifest-Tool keine Option ist ... 

<compatible-screens>
    ....
    <screen Android:screenSize="large" Android:screenDensity="213" />
</compatible-screens>

<uses-feature Android:name="Android.hardware.camera" Android:required="false" />
<uses-feature Android:name="Android.hardware.telephony" Android:required="false" />
10
banachi

Die Dokumentation weist uns an, die Verwendung zu vermeiden 

<compatible-screens>


siehe hier
Stattdessen sollten Sie verwenden

<supports-screens
        Android:anyDensity="true"
        Android:xlargeScreens="true"
        Android:largeScreens="true"
        Android:normalScreens="true"
        Android:smallScreens="true" />


Viele der anderen Antworten auf dieser Seite sind auch wirksame Antworten. Ich habe sie selbst umgesetzt. Vielen Dank an alle.

4
user2506891

Laut developer.Android.com

Wenn die App ein < kompatibles Bildschirmelement im Manifest deklariert, sollte das Element Attribute enthalten, die alle Größen- und Dichtekombinationen für Tablet-Bildschirme angeben dass die App unterstützt.

Beachten Sie, dass Sie nach Möglichkeit vermeiden verwenden sollten, wenn Sie < kompatible- Bildschirme > Element in Ihrer App.


Deshalb mache ich folgende Aufgaben,

1- REMOVED < compatible-screens> aus dem 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" />

    <!-- all large size screens -->
    <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" />

    <!-- all xlarge size screens -->
    <screen Android:screenSize="xlarge" Android:screenDensity="ldpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="mdpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="hdpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="xhdpi" />

    <!-- Special case for Nexus 7 -->
    <screen Android:screenSize="large" Android:screenDensity="213" />

    <screen Android:screenSize="normal" Android:screenDensity="480" />
    <screen Android:screenSize="large" Android:screenDensity="480" />
    <screen Android:screenSize="xlarge" Android:screenDensity="480" />

</compatible-screens>

2- ADDED < supported-screens> Attribut im Manifest

    <supports-screens
        Android:xlargeScreens="true"
        Android:largeScreens="true"
        Android:normalScreens="true"
        Android:smallScreens="true"
        Android:anyDensity="true"
    />

3- ADDED Android: Erforderliches = "falsches" Attribut in < Verwendet-Feature> (gemäß meiner Anwendungsanforderung) = im Manifest

<uses-feature Android:name="Android.hardware.telephony" Android:required="false" />
<uses-feature Android:name="Android.hardware.bluetooth" Android:required="false"/>
<uses-feature Android:name="Android.hardware.location.gps" Android:required="false"/>
<uses-feature Android:name="Android.hardware.camera" Android:required="false"/>
<uses-feature Android:name="Android.hardware.nfc" Android:required="false"/>

Offizielle Android Dokumentation über Berechtigungen, die Featureanforderungen implizieren

Eine genauere Erklärung zu Android: required false finden Sie in ATTRIBUTES: Android: required false

Wenn Sie Android: required = "false" für ein Feature deklarieren, bedeutet dies, dass die Anwendung das Feature bevorzugt verwendet, wenn es auf dem Gerät vorhanden ist, aber , dass es ohne das angegebene Feature funktioniert , falls erforderlich (dies ist die Erlaubnis zur Telefonie bei Tablets).


Indem Sie die obigen Änderungen vornehmen,

MEHR ALS 2000 GERÄTE wurden zur Liste der unterstützten Android Geräte hinzugefügt.

2000+ devices added

Ich hoffe das hilft

3
shanraisshan

Ich bekomme Hilfe bei der Beantwortung dieser Frage.

Wie Android Phonegap für Tablets verfügbar machen?

Ja. Das Problem war mit Berechtigungen. Ich entferne alle Berechtigungen aus AndroidManifest.xml, teste die App und füge die Berechtigung nacheinander hinzu, wenn der Berechtigungsfehler fehlt. Jetzt ist meine App sowohl mit Android-Handys als auch mit Tablets kompatibel. 

0
Kirit Vaghela