2013-03-21 4 views
23

Sto pubblicando la mia app nel Play Store e non voglio che sia disponibile per i tablet. Come posso farlo accadere?Rendi l'app Android non disponibile per i tablet

Non voglio escludere manualmente ogni singolo tablet all'interno della console di sviluppo di Android ma ho davvero bisogno che la mia applicazione funzioni esclusivamente su smartphone.

EDIT: ho fatto come lei ha suggerito, ma ecco il risultato:

enter image description here

E per ulteriori spiegazioni: Ho bisogno del mio app per funzionare su dispositivi che le persone normali chiamano smartphone e non sui dispositivi che normale le persone chiamano tablet ... es deve funzionare su "Galaxy Note 2", ma non il "Galaxy Tab"

risolto Grazie a @CommonsWare:

ho dovuto impostare i seguenti tag nel mio manifesto:

<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="9"/> 

e:

<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" /> 
</compatible-screens> 

e procedere come segue: fare clic destro sul progetto -> proprietà -> Android -> selezionare una destinazione grande da 8

+5

perché è quello? (anche, si prega di definire 'tablet') – njzk2

+2

Se il motivo è che l'applicazione richiede l'accesso alle chiamate vocali telefoniche, tenere presente che alcuni tablet possono supportare chiamate vocali (ad es. ViewSonic ViewPad 7 "che è fondamentalmente solo un telefono di grandi dimensioni) – Jules

+1

Se non vuoi includere i tablet, mi chiedo perché hai scritto anche gli elementi . –

risposta

24

http://developer.android.com/guide/practices/screens-distribution.html#FilteringHansetApps

... è possibile utilizzare l'elemento per gestire la distribuzione della propria applicazione basata su combinazioni di dimensioni dello schermo e la densità. I servizi esterni come Google Play utilizzano queste informazioni per applicare il filtro alla tua applicazione, in modo che solo i dispositivi che dispongono di una configurazione dello schermo con cui dichiari la compatibilità possano scaricare la tua applicazione.

L'elemento di esempio <compatible-screens> da quella pagina:

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

Tuttavia, mi sento di raccomandare anche le linee aggiungendo per una densità xxhdpi, in quanto tali dispositivi sono spese postali ora (DNA Droid, Xperia Z, HTC farfalla , eccetera.).


UPDATE

In primo luogo, per quanto riguarda i vostri errori di generazione, se si legge the documentation for the <compatible-screens> element, si noterà che è stato aggiunto nel API Livello 9, e per qualche strana ragione, è costruire obiettivo è impostare più vecchio di quello.

In secondo luogo, per quanto riguarda:

ho bisogno del mio app per funzionare su dispositivi che le persone normali chiamano smartphone e non su dispositivi che le persone normali chiamano compresse ... per esempio deve essere eseguito su "Galaxy Note 2" ma non su "Galaxy Tab"

Questo non è possibile, semplicemente perché non si dispone di una definizione concreta di ciò che si fa e non si desidera che l'app venga spedita.

Ci sono ~ 8 miliardi di "persone normali" sul pianeta. Siete invitati a intervistare ognuno di loro e chiedere loro cosa pensano che sia il Galaxy Note 2. Alcuni diranno un telefono. Alcuni diranno un tablet. Alcuni diranno un "phablet", che non sarà utile. Alcuni ti cacciano fuori dalle loro case, sostenendo che hai portato qualche demone che emette luce in mezzo a loro (anche questo non sarà utile, e potrebbe essere doloroso se hanno pietre a portata di mano).

Se, ad un certo punto nel tempo, si ottiene una definizione scientifica di ciò che si fa e non si desidera spedire il dispositivo, fare una nuova domanda StackOverflow. Con "definizione scientifica" intendo un algoritmo che può essere applicato universalmente, da tutte le persone su tutti i dispositivi, per determinare cosa fai e non vuoi che la tua app venga attivata.

(si noti che per "tutte le persone", sono esclusi coloro che si potrebbe considerare di essere un demone-monger)

Ad esempio:

  • "Voglio spedire su tutti i dispositivi che hanno capacità di telefonia, indipendentemente dalle dimensioni dello schermo "

  • " mi vuole spedire su tutti i dispositivi che hanno una dimensione dello schermo più piccolo di questo e tanti pollici sul suo lato più piccola:

+1

Ho provato la tua risposta ma mi ha dato errori! – aveschini

+0

@aveschini: vedi gli aggiornamenti alla mia risposta. – CommonsWare

+0

Hai ragione (e fatto una risposta molto divertente. Onesto!). Devo spedire su dispositivi più piccoli di 6 pollici. Ora ho: Ma continua a darmi gli stessi errori dell'immagine che ho postato! – aveschini

7

Usa tag di schermo di supporto nel file manifest è metodo errato. Utilizzare sempre <compatible-screens> per rendere l'app non disponibile per il tablet.

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

Attenzione

Se si utilizza l'elemento per lo scenario sopra (quando l'applicazione non è compatibile con schermi più grandi) e impostare le dimensioni dello schermo più grande attribuisce a "false", quindi i servizi esterni come Google Play non applicano il filtro. La tua applicazione sarà ancora disponibile per gli schermi più grandi, ma quando viene eseguita, non sarà ridimensionata per adattarsi allo schermo. Invece, il sistema emulerà una dimensione dello schermo del telefono (circa 320 dpi x 480 dpi, vedere Modalità di compatibilità dello schermo per ulteriori informazioni). Se si desidera impedire che l'applicazione venga scaricata su schermi più grandi, , utilizzare come suggerito da @CommonsWare.

Utilizzare il tag per escludere l'esecuzione dell'app sul tablet.

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

Non funzionerà. Android spedirà comunque l'app a dispositivi con schermo più grande e applica il proprio algoritmo per ridimensionare l'interfaccia utente. – CommonsWare

+0

Come affermato in un'altra discussione questa soluzione dipende dalla definizione di 'tablet', che potrebbe non essere ciò che vuole aveschini. – tilpner

+0

@CommonsWare Grazie per il tuo prezioso suggerimento. –

-1

Si potrebbe provare ad aggiungere un controllo di qualche tipo per il servizio 3g o 4g. Ciò escluderà la maggior parte, ma probabilmente non tutte le compresse.