Google Play utilizza gli elementi <uses-feature>
dichiarati nel file manifest dell'app per filtrare l'app dai dispositivi
che non soddisfano i requisiti delle funzionalità hardware e software.
Se specifichi le funzionalità richieste dalla tua applicazione, consente a Google Play di presentarla solo agli utenti i cui dispositivi soddisfano i requisiti delle funzionalità dell'applicazione, anziché a tutti gli utenti.
Per informazioni importanti su come Google Play utilizza le funzionalità come base per i filtri, consulta la sezione Google Play e i filtri basati sulle funzionalità.
- syntax:
-
<uses-feature android:name="string" android:required=["true" | "false"] android:glEsVersion="integer" />
- contenuti in:
<manifest>
- description:
Dichiara una singola funzionalità hardware o software utilizzata dall'applicazione.
Lo scopo di una dichiarazione
<uses-feature>
è informare qualsiasi entità esterna dell'insieme di funzionalità hardware e software da cui dipende la tua applicazione. L'elemento offre un attributorequired
che consente di specificare se l'applicazione richiede e non può funzionare senza la funzionalità dichiarata o preferisce avere la funzionalità, ma può funzionare anche senza.Poiché il supporto delle funzionalità può variare in base ai dispositivi Android, l'elemento
<uses-feature>
svolge un ruolo importante nel consentire a un'applicazione di descrivere le funzionalità variabili del dispositivo che utilizza.L'insieme di funzionalità disponibili dichiarate dalla tua applicazione corrisponde all'insieme di costanti di funzionalità rese disponibili da Android
PackageManager
. Le costanti delle funzionalità sono elencate nella sezione Riferimento alle funzionalità di questo documento.Devi specificare ogni funzionalità in un elemento
<uses-feature>
distinto, quindi se la tua applicazione richiede più funzionalità, dichiara più elementi<uses-feature>
. Ad esempio, un'applicazione che richiede sia il Bluetooth sia le funzionalità della fotocamera nel dispositivo dichiara questi due elementi:<uses-feature android:name="android.hardware.bluetooth" android:required="true" /> <uses-feature android:name="android.hardware.camera.any" android:required="true" />
In generale, dichiara sempre gli elementi
<uses-feature>
per tutte le funzionalità richieste dalla tua applicazione.Gli elementi
<uses-feature>
dichiarati sono solo informativi, il che significa che il sistema Android stesso non controlla la presenza di funzionalità corrispondenti sul dispositivo prima di installare un'applicazione.Tuttavia, altri servizi, come Google Play, e applicazioni possono controllare le dichiarazioni
<uses-feature>
della tua applicazione nell'ambito della gestione o dell'interazione con la tua applicazione. Per questo motivo, è molto importante dichiarare tutte le funzionalità utilizzate dalla tua applicazione.Per alcune funzionalità, potrebbe essere presente un attributo specifico che ti consente di definire una versione della funzionalità, ad esempio la versione di Open GL utilizzata (dichiarato con
glEsVersion
). Altre funzionalità che esistono o meno per un dispositivo, ad esempio una videocamera, vengono dichiarate utilizzando l'attributoname
.Sebbene l'elemento
<uses-feature>
sia attivato solo per i dispositivi con livello API 4 o versioni successive, includi questi elementi per tutte le applicazioni, anche seminSdkVersion
è 3 o precedente. I dispositivi che eseguono versioni precedenti della piattaforma ignorano l'elemento.Nota:quando dichiari una funzionalità, ricordati di richiedere anche le autorizzazioni, se opportuno. Ad esempio, devi richiedere l'autorizzazione
CAMERA
prima che la tua applicazione possa accedere all'API della fotocamera. La richiesta dell'autorizzazione concede alla tua applicazione l'accesso all'hardware e al software appropriati. La dichiarazione delle funzionalità utilizzate dalla tua applicazione contribuisce a garantire la compatibilità corretta del dispositivo.- attributes:
-
-
android:name
- Specifica una singola funzionalità hardware o software utilizzata dall'applicazione come stringa descrittore. I valori degli attributi validi sono elencati nelle sezioni Funzionalità hardware e Funzionalità software. Questi valori dell'attributo sono sensibili alle maiuscole.
-
android:required
-
Valore booleano che indica se l'applicazione richiede la funzionalità
specificata in
android:name
.- La dichiarazione di
android:required="true"
per una funzionalità indica che l'applicazione non può funzionare o non è progettata per funzionare, quando la funzionalità specificata non è presente sul dispositivo. - La dichiarazione di
android:required="false"
per una funzionalità indica che l'applicazione la utilizza, se presente sul dispositivo, ma che è progettata per funzionare senza la funzionalità specificata, se necessario.
Il valore predefinito per
android:required
è"true"
. - La dichiarazione di
android:glEsVersion
- La versione OpenGL ES richiesta dall'applicazione. I 16 bit superiori rappresentano il numero maggiore e i 16 bit inferiori rappresentano il numero minore. Ad esempio, per specificare la versione 2.0 di OpenGL ES, imposta il valore su "0x00020000" oppure per specificare OpenGL ES 3.2, imposta il valore su "0x00030002".
Un'applicazione specifica al massimo un attributo
android:glEsVersion
nel file manifest. Se ne specifichi più di uno, viene utilizzato il valore numerico più alto diandroid:glEsVersion
e tutti gli altri valori vengono ignorati.Se un'applicazione non specifica un attributo
android:glEsVersion
, si presume che richieda solo OpenGL ES 1.0, supportato da tutti i dispositivi Android.Un'applicazione può presumere che, se una piattaforma supporta una determinata versione di OpenGL ES, supporti anche tutte le versioni di OpenGL ES numericamente inferiori. Pertanto, per un'applicazione che richiede sia OpenGL ES 1.0 sia OpenGL ES 2.0, specifica che richiede OpenGL ES 2.0.
Per un'applicazione che può funzionare con una di diverse versioni di OpenGL ES, specifica solo la versione numericamente più bassa di OpenGL ES richiesta. Può controllare in fase di esecuzione se è disponibile un livello superiore di OpenGL ES.
Per ulteriori informazioni sull'utilizzo di OpenGL ES, inclusa la verifica della versione supportata di OpenGL ES in fase di esecuzione, consulta la guida all'API OpenGL ES.
-
- introdotto in:
- Livello API 4
- Vedi anche:
Google Play e filtri basati sulle funzionalità
Google Play filtra le applicazioni visibili agli utenti in modo che possano vedere e scaricare solo quelle compatibili con il loro dispositivo. Uno dei modi in cui filtra le applicazioni è in base alla compatibilità con le funzionalità.
Per determinare la compatibilità delle funzionalità di un'applicazione con il dispositivo di un determinato utente, Google Play confronta:
- Funzionalità richieste dall'applicazione, come dichiarato negli elementi
<uses-feature>
del manifest dell'applicazione. - Funzionalità disponibili sul dispositivo, in hardware o software, come indicato utilizzando proprietà di sistema di sola lettura.
Per confrontare con precisione le funzionalità, Android Package Manager fornisce un insieme condiviso di costanti di funzionalità che sia le applicazioni sia i dispositivi utilizzano per dichiarare i requisiti e il supporto delle funzionalità. Le costanti di funzionalità disponibili
sono elencate nella sezione Riferimento alle funzionalità
di questo documento e nella documentazione della classe per
PackageManager
.
Quando l'utente avvia Google Play, l'applicazione esegue una query sul gestore dei pacchetti per ottenere l'elenco delle funzionalità disponibili sul dispositivo chiamandogetSystemAvailableFeatures()
. L'applicazione dello Store poi passa l'elenco delle funzionalità a Google Play quando viene stabilita la sessione per l'utente.
Ogni volta che carichi un'applicazione su Google Play Console,
Google Play esegue la scansione del file manifest dell'applicazione. Cerca gli elementi <uses-feature>
e li valuta in combinazione con altri elementi, in alcuni casi, come gli elementi <uses-sdk>
e <uses-permission>
. Dopo aver stabilito l'insieme di funzionalità richieste dell'applicazione, memorizza l'elenco internamente come metadati associati all'APK dell'applicazione e alla versione dell'applicazione.
Quando un utente cerca o sfoglia applicazioni utilizzando l'app Google Play, il servizio confronta le funzionalità necessarie per ogni applicazione con quelle disponibili sul dispositivo dell'utente. Se tutte le funzionalità obbligatorie di un'applicazione sono presenti sul dispositivo, Google Play consente all'utente di visualizzarla e potenzialmente scaricarla.
Se una funzionalità richiesta non è supportata dal dispositivo, Google Play filtra l'applicazione in modo che non sia visibile all'utente o disponibile per il download.
Poiché le funzionalità dichiarate negli elementi <uses-feature>
incidono direttamente sul modo in cui Google Play filtra la tua applicazione, è importante capire come Google Play valuta il manifest dell'applicazione
e stabilisce l'insieme di funzionalità richieste. Le sezioni seguenti forniscono maggiori informazioni.
Filtri in base a funzionalità dichiarate esplicitamente
Una funzionalità dichiarata in modo esplicito è quella dichiarata dall'applicazione in un elemento<uses-feature>
. La dichiarazione della funzionalità può includere un attributo android:required=["true" | "false"]
se esegui la compilazione per il livello API 5 o versioni successive.
In questo modo puoi specificare se l'applicazione richiede la funzionalità e non può funzionare correttamente senza ("true"
) o se la utilizza, se disponibile, ma è progettata per funzionare senza ("false"
).
Google Play gestisce le funzionalità dichiarate esplicitamente nel seguente modo:
- Se una funzionalità è dichiarata esplicitamente come obbligatoria, come mostrato nell'esempio seguente, Google Play la aggiunge all'elenco delle funzionalità obbligatorie per l'applicazione. Quindi,
filtra l'applicazione dagli utenti su dispositivi che non forniscono questa funzionalità.
<uses-feature android:name="android.hardware.camera.any" android:required="true" />
- Se una funzionalità è dichiarata esplicitamente come non obbligatoria, come mostrato nell'esempio seguente, Google Play non la aggiunge all'elenco delle funzionalità richieste. Per questo motivo, una funzionalità non obbligatoria dichiarata esplicitamente non viene mai considerata durante il filtraggio dell'applicazione. Anche se il dispositivo non fornisce la funzionalità dichiarata, Google Play considera comunque l'applicazione compatibile con il dispositivo e la mostra all'utente, a meno che non vengano applicate altre regole di filtro.
<uses-feature android:name="android.hardware.camera" android:required="false" />
- Se una funzionalità è dichiarata esplicitamente, ma senza un attributo
android:required
, Google Play presume che sia obbligatoria e imposta un filtro in base a questa.
In generale, se la tua applicazione è progettata per funzionare su Android 1.6 e versioni precedenti,
l'attributo android:required
non è disponibile nell'
API e Google Play presuppone che tutte le
dichiarazioni <uses-feature>
siano obbligatorie.
Nota:dichiarando una funzionalità in modo esplicito e includendo un attributo android:required="false"
, puoi disattivare efficacemente tutti i filtri su Google Play per la funzionalità specificata.
Filtrare in base alle funzionalità implicite
Una funzionalità implicita è quella richiesta da un'applicazione per funzionare correttamente, ma che non è dichiarata in un elemento <uses-feature>
nel file manifest. Rigorosamente
parlando, è meglio che ogni applicazione dichiari sempre tutte le funzionalità che
utilizza o richiede e l'assenza di una dichiarazione per una funzionalità utilizzata da un
applicata può essere considerata un errore.
Tuttavia, come misura di salvaguardia per utenti e sviluppatori, Google Play cerca le funzionalità implicite in ogni applicazione e imposta filtri per queste funzionalità, come per le funzionalità dichiarate esplicitamente.
Un'applicazione potrebbe richiedere una funzionalità, ma non dichiararla per motivi quali:
- L'applicazione è stata compilata in base a una versione precedente della libreria Android (Android 1.5 o versioni precedenti), per la quale l'elemento
<uses-feature>
non è disponibile. - Lo sviluppatore presume erroneamente che la funzionalità sia presente su tutti i dispositivi e che una dichiarazione non sia necessaria.
- Lo sviluppatore omette accidentalmente la dichiarazione della funzionalità.
- Lo sviluppatore dichiara la funzionalità in modo esplicito, ma la dichiarazione non è valida. Ad esempio, un errore ortografico nel nome dell'elemento
<uses-feature>
o un valore di stringa non riconosciuto per l'attributoandroid:name
invalida la dichiarazione della funzionalità.
Per tenere conto di questi casi, Google Play tenta di scoprire i requisiti delle funzionalità implicite di un'applicazione esaminando altri elementi dichiarati nel file manifest, in particolare gli elementi <uses-permission>
.
Se un'applicazione richiede autorizzazioni correlate all'hardware, Google Play assume che l'applicazione utilizzi le funzionalità hardware sottostanti e quindi le richieda, anche se non sono presenti dichiarazioni <uses-feature>
corrispondenti. Per queste autorizzazioni, Google Play aggiunge le funzionalità hardware di base ai metadati che memorizza per l'applicazione e imposta filtri per queste.
Ad esempio, se un'applicazione richiede l'autorizzazione CAMERA
, Google Play presume che l'applicazione richieda una fotocamera posteriore (di fronte al mondo) anche se l'app non dichiara un elemento <uses-feature>
per android.hardware.camera
. Di conseguenza, Google Play filtra i dispositivi
che non hanno una fotocamera posteriore.
Se non vuoi che Google Play applichi un filtro in base a una funzionalità implicita specifica, dichiarala esplicitamente in un elemento <uses-feature>
e includi l'attributo android:required="false"
. Ad esempio, per disattivare il filtro implicito nell'autorizzazione CAMERA
, dichiara le seguenti funzionalità:
<uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
Attenzione: le autorizzazioni richieste negli elementi <uses-permission>
possono influire direttamente sul modo in cui Google Play filtra la tua applicazione. La sezione Autorizzazioni che implicano requisiti di funzionalità elenca l'insieme completo di autorizzazioni che implicano requisiti di funzionalità e quindi attivano il filtro.
Istruzioni speciali per la funzionalità Bluetooth
Google Play applica regole leggermente diverse rispetto a quelle descritte nell'esempio precedente per determinare il filtro per il Bluetooth.
Se un'applicazione dichiara un'autorizzazione Bluetooth in un elemento <uses-permission>
, ma non dichiara esplicitamente la funzionalità Bluetooth in un elemento <uses-feature>
, Google Play controlla le versioni della piattaforma Android su cui è progettata per funzionare l'applicazione, come specificato nell'elemento <uses-sdk>
.
Come mostrato nella tabella seguente, Google Play abilita il filtro per la funzionalità Bluetooth solo se l'applicazione dichiara la piattaforma minima o di destinazione come Android 2.0 (livello API 5) o versioni successive. Tuttavia, tieni presente che Google Play applica le normali regole di filtro quando l'applicazione dichiara esplicitamente la funzionalità Bluetooth in un elemento <uses-feature>
.
Tabella 1. In che modo Google Play determina il requisito della funzionalità Bluetooth per un'applicazione che richiede l'autorizzazione Bluetooth, ma non dichiara la funzionalità Bluetooth in un elemento <uses-feature>
.
minSdkVersion è… |
targetSdkVersion è |
Risultato |
---|---|---|
<uses-sdk> non è dichiarato |
<=4 | Google Play non filtra l'applicazione da nessun dispositivo in base al supporto segnalato per la funzionalità android.hardware.bluetooth . |
<=4 | >=5 | Google Play filtra l'applicazione da tutti i dispositivi che non supportano la funzionalità android.hardware.bluetooth (incluse le release precedenti). |
>=5 | >=5 |
I seguenti esempi illustrano i diversi effetti di filtro in base al modo in cui Google Play gestisce la funzionalità Bluetooth.
-
Nel primo esempio, un'applicazione progettata per funzionare su livelli API precedenti dichiara un'autorizzazione Bluetooth, ma non dichiara la funzionalità Bluetooth in un elemento
- Risultato: Google Play non filtra l'applicazione da nessun dispositivo.
<uses-feature>
.
<manifest ...> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-sdk android:minSdkVersion="3" /> ... </manifest>
-
Nel secondo esempio, la stessa applicazione dichiara anche un livello API di destinazione "5".
- Risultato: ora Google Play presuppone che la funzionalità sia obbligatoria e filtra l'applicazione da tutti i dispositivi che non segnalano il supporto Bluetooth, inclusi i dispositivi con versioni precedenti della piattaforma.
<manifest ...> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" /> ... </manifest>
-
Qui, la stessa applicazione ora dichiara specificamente la funzionalità Bluetooth.
- Risultato: identico all'esempio precedente: viene applicato il filtro.
<manifest ...> <uses-feature android:name="android.hardware.bluetooth" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" /> ... </manifest>
-
Infine, nel seguente caso, la stessa applicazione aggiunge un attributo
- Risultato: Google Play disattiva il filtro in base al supporto delle funzionalità Bluetooth per tutti i dispositivi.
android:required="false"
.
<manifest ...> <uses-feature android:name="android.hardware.bluetooth" android:required="false" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" /> ... </manifest>
Testare le funzionalità richieste dall'applicazione
Puoi utilizzare lo strumento aapt2
, incluso nell'SDK Android, per determinare in che modo Google Play filtra la tua applicazione in base alle funzionalità e alle autorizzazioni dichiarate. Per farlo, esegui aapt2
con il comando dump
badging
. In questo modo, aapt2
analizzerà il file manifest della tua applicazione e applicherà le stesse regole utilizzate da Google Play per determinare le funzionalità necessarie alla tua applicazione.
Per utilizzare lo strumento:
- Crea ed esporta l'applicazione come APK non firmato.
Se stai sviluppando in Android Studio, compila l'applicazione con Gradle come segue:
- Apri il progetto e seleziona Esegui > Modifica configurazioni.
- Seleziona il segno Più nell'angolo in alto a sinistra della finestra Configurazioni di esecuzione/debug.
- Seleziona Gradle.
- Inserisci "APK non firmato" in Nome.
- Scegli il modulo dalla sezione Progetto Gradle.
- Inserisci "assembla" in Attività.
- Seleziona OK per completare la nuova configurazione.
- Assicurati che la configurazione di esecuzione APK non firmato sia selezionata nella barra degli strumenti, quindi seleziona Esegui > Esegui "APK non firmato".
<ProjectName>/app/build/outputs/apk/
. - Individua lo strumento
aapt2
, se non è già presente nel tuo PATH. Se utilizzi SDK Tools r8 o versioni successive, puoi trovareaapt2
nella directory<SDK>/build-tools/<tools version number>
.Nota: devi utilizzare la versione di
aapt2
fornita per il componente Build-Tools più recente disponibile. Se non hai il componente Build-Tools più recente, scaricalo utilizzando Android SDK Manager. - Esegui
aapt2
utilizzando questa sintassi:
$ aapt2 dump badging <path_to_exported_.apk>
Ecco un esempio di output del comando per il secondo esempio Bluetooth mostrato precedentemente:
$ ./aapt2 dump badging BTExample.apk package: name='com.example.android.btexample' versionCode='' versionName='' uses-permission:'android.permission.BLUETOOTH_ADMIN' uses-feature:'android.hardware.bluetooth' sdkVersion:'3' targetSdkVersion:'5' application: label='BT Example' icon='res/drawable/app_bt_ex.png' launchable activity name='com.example.android.btexample.MyActivity'label='' icon='' uses-feature:'android.hardware.touchscreen' main supports-screens: 'small' 'normal' 'large' locales: '--_--' densities: '160'
Riferimento alle funzionalità
Le sezioni seguenti forniscono informazioni di riferimento sulle funzionalità hardware, sulle funzionalità software e sugli insiemi di autorizzazioni che implicano requisiti specifici per le funzionalità.
Funzionalità hardware
Questa sezione presenta le funzionalità hardware supportate dalla release della piattaforma più recente. Per indicare che la tua app utilizza o richiede una funzionalità hardware, dichiara il valore corrispondente, che inizia con "android.hardware"
, in un attributo android:name
.
Ogni volta che dichiari una funzionalità hardware, utilizza un elemento <uses-feature>
distinto.
Funzionalità dell'hardware audio
-
android.hardware.audio.low_latency
- L'app utilizza la pipeline audio a bassa latenza del dispositivo, che riduce i ritardi e i ritardi durante l'elaborazione dell'input o dell'output audio.
-
android.hardware.audio.output
- L'app trasmette l'audio utilizzando gli altoparlanti, il jack audio, le funzionalità di streaming Bluetooth o un meccanismo simile del dispositivo.
-
android.hardware.audio.pro
- L'app utilizza le funzionalità e le prestazioni audio di alta qualità del dispositivo.
-
android.hardware.microphone
- L'app registra l'audio utilizzando il microfono del dispositivo.
Funzionalità hardware Bluetooth
-
android.hardware.bluetooth
- L'app utilizza le funzionalità Bluetooth del dispositivo, in genere per comunicare con altri dispositivi con Bluetooth integrato.
-
android.hardware.bluetooth_le
- L'app utilizza le funzionalità radio Bluetooth Low Energy del dispositivo.
Funzionalità hardware della fotocamera
Nota:per evitare un filtraggio non necessario della tua app da parte di Google Play, aggiungi android:required="false"
a qualsiasi funzionalità della fotocamera di cui la tua app può funzionare senza. In caso contrario, Google Play presume che la funzionalità sia obbligatoria e impedisce ai dispositivi che non la supportano di accedere alla tua app.
Supporto per schermi di grandi dimensioni
Alcuni dispositivi con schermo di grandi dimensioni non supportano tutte le funzionalità della fotocamera. I Chromebook solitamente non dispongono di fotocamere posteriori (rivolte verso l'esterno), autofocus o flash. Tuttavia, i Chromebook hanno fotocamere anteriori (rivolte verso l'utente) e sono spesso collegati a videocamere esterne.
Per fornire il supporto di base della fotocamera e rendere la tua app disponibile per il maggior numero possibile di dispositivi, aggiungi le seguenti impostazioni delle funzionalità della fotocamera al manifest dell'app:
<uses-feature android:name="android.hardware.camera.any" android:required="false" /> <uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" /> <uses-feature android:name="android.hardware.camera.flash" android:required="false" />
Modifica le impostazioni della funzionalità per supportare i casi d'uso della tua app. Tuttavia, per rendere la tua app disponibile al maggior numero di dispositivi, includi sempre l'attributo required
per specificare esplicitamente se una funzionalità è obbligatoria.
Elenco delle funzionalità
-
android.hardware.camera.any
-
L'app utilizza una delle fotocamere del dispositivo o una fotocamera esterna collegata al dispositivo. Utilizza questa funzionalità anziché
android.hardware.camera
oandroid.hardware.camera.front
se la tua app non lo fa richiede la fotocamera rivolta verso il retro (mondo) o verso il davanti (utente), rispettivamente.L'autorizzazione
CAMERA
implica che la tua app utilizzi ancheandroid.hardware.camera
. Una fotocamera posteriore è obbligatoria a meno cheandroid.hardware.camera
non sia dichiarata conandroid:required="false"
. -
android.hardware.camera
-
L'app utilizza la fotocamera posteriore (rivolta verso l'esterno) del dispositivo.
Attenzione: i dispositivi come i Chromebook che dispongono solo di una fotocamera anteriore (di fronte all'utente) non supportano questa funzionalità. Utilizza
android.hardware.camera.any
se la tua app può utilizzare qualsiasi fotocamera, indipendentemente dalla direzione in cui è rivolta.Nota: l'autorizzazione
CAMERA
implica che una fotocamera posteriore è una funzionalità obbligatoria. Per contribuire a garantire un corretto filtraggio su Google Play quando il file manifest dell'app include l'autorizzazioneCAMERA
, specifica esplicitamente che la tua app utilizza la funzionalitàcamera
e indica se è obbligatoria, ad esempio:
<uses-feature android:name="android.hardware.camera" android:required="false" />
-
android.hardware.camera.front
-
L'app utilizza la fotocamera anteriore (rivolta verso l'utente) del dispositivo.
L'autorizzazione
CAMERA
implica che la tua app utilizzi ancheandroid.hardware.camera
. Una fotocamera posteriore è obbligatoria a meno cheandroid.hardware.camera
non sia dichiarata conandroid:required="false"
.Attenzione: se la tua app utilizza
android.hardware.camera.front
, ma non dichiara esplicitamenteandroid.hardware.camera
conandroid.required="false"
, i dispositivi che non hanno una fotocamera posteriore (come i Chromebook) vengono filtrati da Google Play. Se la tua app supporta dispositivi con solo fotocamere anteriori, dichiaraandroid.hardware.camera
conandroid.required="false"
per evitare filtri non necessari. -
android.hardware.camera.external
-
L'app comunica con una videocamera esterna collegata dal cliente al dispositivo. Questa funzionalità non garantisce che sia disponibile una videocamera esterna per l'utilizzo da parte della tua app.
L'autorizzazione
CAMERA
implica che la tua app utilizzi ancheandroid.hardware.camera
. Una fotocamera posteriore è obbligatoria a meno cheandroid.hardware.camera
non sia dichiarata conandroid:required="false"
. -
android.hardware.camera.autofocus
-
L'app utilizza la funzionalità di messa a fuoco automatica supportata dalla fotocamera del dispositivo.
Nota: l'autorizzazione
CAMERA
implica che l'autofocus è una funzionalità obbligatoria. Per contribuire a garantire un corretto filtro su Google Play quando il file manifest dell'app include l'autorizzazioneCAMERA
, specifica esplicitamente che la tua app utilizza la funzionalità di autofocus e indica se è obbligatoria o meno, ad esempio:
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
. -
android.hardware.camera.flash
-
L'app utilizza la funzionalità di flash supportata dalla fotocamera del dispositivo.
-
android.hardware.camera.capability.manual_post_processing
-
L'app utilizza la funzionalità
MANUAL_POST_PROCESSING
supportata dalla fotocamera del dispositivo.Questa funzionalità consente all'app di ignorare la funzionalità di bilanciamento del bianco automatico della videocamera. Utilizza
android.colorCorrection.transform
,android.colorCorrection.gains
e unandroid.colorCorrection.mode
diTRANSFORM_MATRIX
. -
android.hardware.camera.capability.manual_sensor
-
L'app utilizza la funzionalità
MANUAL_SENSOR
supportata dalla fotocamera del dispositivo.Questa funzionalità implica il supporto del blocco dell'esposizione automatica (
android.control.aeLock
), che consente di mantenere fissi il tempo di esposizione e la sensibilità della fotocamera su valori specifici. -
android.hardware.camera.capability.raw
-
L'app utilizza la funzionalità
RAW
supportata dalla fotocamera del dispositivo.Questa funzionalità implica che il dispositivo possa salvare file DNG (raw). La fotocamera del dispositivo fornisce i metadati relativi ai file DNG necessari per consentire alla tua app di elaborare direttamente le immagini RAW.
-
android.hardware.camera.level.full
-
L'app utilizza il livello
FULL
di supporto per l'acquisizione di immagini fornito almeno da una delle fotocamere del dispositivo. Il supporto diFULL
include funzionalità di acquisizione in sequenza, controllo per fotogramma e controllo della post-elaborazione manuale. ConsultaINFO_SUPPORTED_HARDWARE_LEVEL_FULL
.
Funzionalità hardware dell'interfaccia utente del dispositivo
-
android.hardware.type.automotive
-
L'app è progettata per mostrare la propria interfaccia utente su una serie di schermi all'interno di un veicolo. L'utente interagisce con l'app utilizzando pulsanti fisici, touch, controlli rotatori e interfacce simili al mouse. In genere, gli schermi del veicolo vengono visualizzati nella console centrale o nel quadro strumenti.
Nota : consulta la sezione Distribuire su auto per ulteriori informazioni sull'utilizzo di questa funzionalità e sulle indicazioni per creare app per auto.
-
android.hardware.type.television
-
(Deprecato; utilizza
android.software.leanback
.)L'app è progettata per mostrare la sua interfaccia utente su una TV. Questa funzionalità definisce "televisione" come una tipica esperienza televisiva in salotto: l'app visualizzata su un grande schermo, l'utente seduto lontano e la forma dominante di input è qualcosa come un D-pad, anziché un mouse, un cursore o un dispositivo touch.
-
android.hardware.type.watch
- L'app è progettata per mostrare la propria interfaccia utente su uno smartwatch. Uno smartwatch viene indossato sul corpo, ad esempio sul polso. L'utente è molto vicino al dispositivo mentre interagisce con esso.
-
android.hardware.type.pc
-
L'app è progettata per mostrare la sua UI sui Chromebook. Questa funzionalità disattiva l'emulazione di input per mouse e touchpad, poiché i Chromebook utilizzano hardware per mouse e touchpad. Consulta Input da mouse.
Nota: imposta
required="false"
per questo elemento; in caso contrario, il Google Play Store rende la tua app non disponibile per i dispositivi diversi dai Chromebook.
Funzionalità dell'hardware per il riconoscimento delle impronte
-
android.hardware.fingerprint
- L'app legge le impronte utilizzando l'hardware biometrico del dispositivo.
Funzionalità hardware del gamepad
-
android.hardware.gamepad
- L'app acquisisce l'input del controller da un gamepad collegato o dal dispositivo stesso.
Funzionalità hardware a infrarossi
-
android.hardware.consumerir
- L'app utilizza le funzionalità a infrarossi (IR) del dispositivo, in genere per comunicare con altri dispositivi IR di consumo.
Funzionalità hardware della posizione
-
android.hardware.location
- L'app utilizza una o più funzionalità del dispositivo per determinare la posizione, come la posizione GPS, la posizione di rete o la posizione della torre di telefonia mobile.
-
android.hardware.location.gps
-
L'app utilizza coordinate di posizione precise ottenute da un ricevitore del sistema di posizionamento globale (GPS) sul dispositivo.
Se un'app utilizza questa funzionalità, implica che utilizzi anche la funzionalità
android.hardware.location
, a meno che questa funzionalità principale non sia dichiarata con l'attributoandroid:required="false"
. -
android.hardware.location.network
-
L'app utilizza coordinate approssimative della posizione ottenute da un sistema di geolocalizzazione basato su rete supportato sul dispositivo.
Se un'app utilizza questa funzionalità, implica che utilizzi anche la funzionalità
android.hardware.location
, a meno che questa funzionalità principale non sia dichiarata con l'attributoandroid:required="false"
.
Funzionalità hardware NFC
-
android.hardware.nfc
- L'app utilizza le funzionalità radio NFC (Near Field Communication) del dispositivo.
-
android.hardware.nfc.hce
-
L'app utilizza l'emulazione di carte NFC ospitata sul dispositivo.
Funzionalità hardware OpenGL ES
-
android.hardware.opengles.aep
- L'app utilizza il pacchetto di estensioni OpenGL ES per Android installato sul dispositivo.
Funzionalità hardware del sensore
-
android.hardware.sensor.accelerometer
- Per rilevare l'orientamento corrente del dispositivo, l'app utilizza le letture del movimento dell'accelerometro del dispositivo. Ad esempio, un'app potrebbe utilizzare le letture dell'accelerometro per determinare quando passare dall'orientamento verticale a quello orizzontale e viceversa.
-
android.hardware.sensor.ambient_temperature
- L'app utilizza il sensore di temperatura ambiente (ambientale) del dispositivo. Ad esempio, un'app meteo può segnalare la temperatura interna o esterna.
-
android.hardware.sensor.barometer
- L'app utilizza il barometro del dispositivo. Ad esempio, un'app meteo potrebbe indicare la pressione atmosferica.
-
android.hardware.sensor.compass
- L'app utilizza il magnetometro (bussola) del dispositivo. Ad esempio, un'app di navigazione potrebbe mostrare la direzione corrente in cui si trova un utente.
-
android.hardware.sensor.gyroscope
- L'app utilizza il giroscopio del dispositivo per rilevare la rotazione e la torsione, creando un sistema di orientamento a sei assi. Utilizzando questo sensore, un'app può rilevare più facilmente quando deve passare dall'orientamento verticale a quello orizzontale e viceversa.
-
android.hardware.sensor.hifi_sensors
- L'app utilizza i sensori ad alta fedeltà (Hi-Fi) del dispositivo. Ad esempio, un'app di giochi potrebbe rilevare i movimenti dell'utente con elevata precisione.
-
android.hardware.sensor.heartrate
- L'app utilizza il cardiofrequenzimetro del dispositivo. Ad esempio, un'app per il fitness potrebbe registrare le tendenze della frequenza cardiaca di un utente nel tempo.
-
android.hardware.sensor.heartrate.ecg
- L'app utilizza il sensore di rilevamento del battito cardiaco dell'elettrocardiogramma (ECG) del dispositivo. Ad esempio, un'app per il fitness potrebbe riportare informazioni più dettagliate sulla frequenza cardiaca di un utente.
-
android.hardware.sensor.light
- L'app utilizza il sensore di luce del dispositivo. Ad esempio, un'app potrebbe mostrare una delle due combinazioni di colori in base alle condizioni di illuminazione ambientale.
-
android.hardware.sensor.proximity
- L'app utilizza il sensore di prossimità del dispositivo. Ad esempio, un'app di telefonia potrebbe disattivare lo schermo del dispositivo quando rileva che l'utente lo tiene vicino al corpo.
-
android.hardware.sensor.relative_humidity
- L'app utilizza il sensore di umidità relativa del dispositivo. Ad esempio, un'app meteo potrebbe utilizzare l'umidità per calcolare e segnalare il punto di rugiada attuale.
-
android.hardware.sensor.stepcounter
- L'app utilizza il contapassi del dispositivo. Ad esempio, un'app per il fitness potrebbe segnalare il numero di passi che un utente deve fare per raggiungere il suo obiettivo giornaliero di conto dei passi.
-
android.hardware.sensor.stepdetector
- L'app utilizza il rilevatore di passi del dispositivo. Ad esempio, un'app per il fitness potrebbe utilizzare l'intervallo di tempo tra i passaggi per dedurre il tipo di esercizio fisico che l'utente sta svolgendo.
Funzionalità hardware dello schermo
-
android.hardware.screen.landscape
-
android.hardware.screen.portrait
-
L'app richiede che il dispositivo sia in orientamento verticale o orizzontale. Se la tua app supporta entrambi gli orientamenti, non è necessario dichiarare nessuna delle due funzionalità.
Ad esempio, se la tua app richiede l'orientamento verticale, dichiara la seguente funzionalità in modo che solo i dispositivi che supportano l'orientamento verticale, sempre o per scelta dell'utente, possano eseguire la tua app:
<uses-feature android:name="android.hardware.screen.portrait" />
Per impostazione predefinita, si presume che entrambi gli orientamenti non siano obbligatori, pertanto la tua app può essere installata su dispositivi che supportano uno o entrambi gli orientamenti. Tuttavia, se una delle tue attività richiede di essere eseguita con un'inclinazione specifica, utilizzando l'attributo
android:screenOrientation
, questa dichiarazione implica che la tua app richiede quell'orientamento.Ad esempio, se dichiari
android:screenOrientation
con"landscape"
,"reverseLandscape"
o"sensorLandscape"
, la tua app è disponibile solo sui dispositivi che supportano l'orientamento orizzontale.Come best practice, dichiara il tuo requisito per questo orientamento utilizzando un elemento
<uses-feature>
. Se dichiari un'inclinazione per la tua attività utilizzandoandroid:screenOrientation
, ma non lo richiedi effettivamente, puoi disattivare il requisito dichiarando l'orientamento con un elemento<uses-feature>
e includendoandroid:required="false"
.Per la compatibilità con le versioni precedenti, qualsiasi dispositivo con Android 3.1 (livello API 12) o versioni precedenti supporta sia l'orientamento orizzontale che quello verticale.
Funzionalità hardware per la telefonia
-
android.hardware.telephony
- L'app utilizza le funzionalità di telefonia del dispositivo, ad esempio la radiotelefonia con servizi di comunicazione dati.
-
android.hardware.telephony.cdma
-
L'app utilizza il sistema radio di telefonia CDMA (Code Division Multiple Access).
Se un'app utilizza questa funzionalità, implica che utilizzi anche la funzionalità
android.hardware.telephony
, a meno che questa funzionalità principale non sia dichiarata conandroid:required="false"
. -
android.hardware.telephony.gsm
-
L'app utilizza il sistema radio di telefonia GSM (Global System for Mobile Communications).
Se un'app utilizza questa funzionalità, implica che utilizzi anche la funzionalità
android.hardware.telephony
, a meno che questa funzionalità principale non sia dichiarata conandroid:required="false"
.
Funzionalità hardware del touchscreen
-
android.hardware.faketouch
-
L'app utilizza eventi di interazione tocco di base, come tocco e trascinamento.
Se dichiarata come obbligatoria, questa funzionalità indica che l'app è compatibile con un dispositivo solo se questo dispone di un touchscreen "fake touch" simulato o di un touchscreen reale.
Un dispositivo che offre un'interfaccia touch falsa fornisce un sistema di input dell'utente che emula un sottoinsieme delle funzionalità di un touchscreen. Ad esempio, un mouse o un telecomando potrebbe controllare un cursore sullo schermo.
Se la tua app richiede un'interazione di base point and click e non funziona solo con un controller D-pad, dichiara questa funzionalità. Poiché si tratta del livello minimo di interazione tocco, puoi anche utilizzare un'app che dichiara questa funzionalità su dispositivi che offrono interfacce touch più complesse.
Per impostazione predefinita, le app richiedono la funzionalità
android.hardware.faketouch
. Se vuoi limitare la tua app ai dispositivi con solo un touchscreen, devi dichiarare esplicitamente che il touchscreen è obbligatorio come segue:<uses-feature android:name="android.hardware.touchscreen" android:required="true" />
Tutte le app che non richiedono esplicitamente
android.hardware.touchscreen
, come mostrato nell'esempio seguente, funzionano anche sui dispositivi conandroid.hardware.faketouch
.<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
-
android.hardware.faketouch.multitouch.distinct
-
L'app monitora due o più "dita" distinte su un'interfaccia touch falsa. Si tratta di un superset della funzionalità
android.hardware.faketouch
. Se dichiarata come obbligatoria, questa funzionalità indica che l'app è compatibile con un dispositivo solo se il dispositivo emula il monitoraggio distinto di due o più dita o ha un touchscreen reale.A differenza del multitouch distinto definito da
android.hardware.touchscreen.multitouch.distinct
, i dispositivi di input che supportano il multitouch distinto con un'interfaccia touch falsa non supportano tutti i gesti con due dita, perché l'input viene trasformato in movimento del cursore sullo schermo. In altre parole, i gesti con un dito su un dispositivo di questo tipo muovono un cursore, gli scorrimenti con due dita attivano eventi tocco con un dito e altri gesti con due dita attivano gli eventi tocco con due dita corrispondenti.Questa funzionalità può essere supportata da un dispositivo che offre un trackpad touch a due dita per il movimento del cursore.
-
android.hardware.faketouch.multitouch.jazzhand
-
L'app rileva cinque o più "dita" distinte su un'interfaccia touch falsa. Si tratta di un superset della funzionalità
android.hardware.faketouch
. Se dichiarata come obbligatoria, questa funzionalità indica che l'app è compatibile con un dispositivo solo se il dispositivo emula il monitoraggio distinto di cinque o più dita o ha un touchscreen reale.A differenza del multitouch distinto definito da
android.hardware.touchscreen.multitouch.jazzhand
, i dispositivi di input che supportano il multitouch jazzhand con un'interfaccia touch falsa non supportano tutti i gesti con cinque dita, perché l'input viene trasformato in movimento del cursore sullo schermo. In altre parole, i gesti con una sola mano su un dispositivo di questo tipo muovono un cursore, i gesti con più dita attivano eventi di tocco con una sola mano e altri gesti con più dita attivano gli eventi di tocco con più dita corrispondenti.Questa funzionalità può essere supportata da un dispositivo che offre un trackpad touch a cinque dita per il movimento del cursore.
-
android.hardware.touchscreen
-
L'app utilizza le funzionalità del touchscreen del dispositivo per gesti più interattivi rispetto agli eventi touch di base, come un movimento rapido. Si tratta di un superinsieme della funzionalità
android.hardware.faketouch
.Per impostazione predefinita, tutte le app richiedono questa funzionalità e pertanto non sono disponibili per i dispositivi che forniscono solo un'interfaccia "fake touch" emulata. Puoi rendere disponibile la tua app su dispositivi che forniscono un'interfaccia touch falsa o anche su dispositivi che forniscono solo un controller D-pad dichiarando esplicitamente che un touchscreen non è necessario utilizzando
android.hardware.touchscreen
conandroid:required="false"
. Aggiungi questa dichiarazione se la tua app utilizza, ma non richiede, un'interfaccia touchscreen reale. Tutte le app che non richiedono esplicitamenteandroid.hardware.touchscreen
funzionano anche sui dispositivi conandroid.hardware.faketouch
.Se la tua app richiede un'interfaccia tocco, ad esempio per eseguire gesti tocco più avanzati come i movimenti rapidi, non devi dichiarare alcuna funzionalità dell'interfaccia tocco, perché sono richieste per impostazione predefinita. Tuttavia, è meglio dichiarare esplicitamente tutte le funzionalità utilizzate dalla tua app.
Se hai bisogno di un'interazione tocco più complessa, come i gesti con più dita, dichiara che la tua app utilizza funzionalità avanzate del touchscreen.
-
android.hardware.touchscreen.multitouch
-
L'app utilizza le funzionalità di base del multitouch a due punti del dispositivo, come per i gesti di pizzicamento, ma non deve monitorare i tocchi in modo indipendente. Si tratta di un superset della funzionalità
android.hardware.touchscreen
.Se un'app utilizza questa funzionalità, implica che utilizzi anche la funzionalità
android.hardware.touchscreen
, a meno che questa funzionalità principale non sia dichiarata conandroid:required="false"
. -
android.hardware.touchscreen.multitouch.distinct
-
L'app utilizza le funzionalità multitouch avanzate del dispositivo per monitorare due o più punti in modo indipendente. Questa funzionalità è un superset della funzionalità
android.hardware.touchscreen.multitouch
.Se un'app utilizza questa funzionalità, implica che utilizzi anche la funzionalità
android.hardware.touchscreen.multitouch
, a meno che questa funzionalità principale non sia dichiarata conandroid:required="false"
. -
android.hardware.touchscreen.multitouch.jazzhand
-
L'app utilizza le funzionalità multitouch avanzate del dispositivo per monitorare indipendentemente cinque o più punti. Questa funzionalità è un superset della funzionalità
android.hardware.touchscreen.multitouch
.Se un'app utilizza questa funzionalità, implica che utilizzi anche la funzionalità
android.hardware.touchscreen.multitouch
, a meno che questa funzionalità principale non sia dichiarata conandroid:required="false"
.
Funzionalità hardware USB
-
android.hardware.usb.accessory
- L'app si comporta come un dispositivo USB e si connette agli host USB.
-
android.hardware.usb.host
- L'app utilizza gli accessori USB collegati al dispositivo. Il dispositivo funge da host USB.
Funzionalità hardware Vulkan
-
android.hardware.vulkan.compute
-
L'app utilizza le funzionalità di calcolo Vulkan. Questa funzionalità indica che l'app richiede l'implementazione di Vulkan con accelerazione hardware. La versione della funzionalità indica il livello di funzionalità di calcolo facoltative richieste dall'app oltre i requisiti di Vulkan 1.0. Ad esempio, se la tua app richiede il supporto del livello di calcolo Vulkan 0, dichiara la seguente funzionalità:
Per ulteriori dettagli sulla versione della funzionalità, consulta<uses-feature android:name="android.hardware.vulkan.compute" android:version="0" android:required="true" />
FEATURE_VULKAN_HARDWARE_COMPUTE
. -
android.hardware.vulkan.level
-
L'app utilizza funzionalità a livello di Vulkan. Questa funzionalità indica che l'app richiede l'implementazione di Vulkan con accelerazione hardware. La versione della funzionalità indica il livello di funzionalità hardware facoltative richieste dall'app. Ad esempio, se la tua app richiede il supporto dell'hardware Vulkan di livello 0, dichiara la seguente funzionalità:
Per ulteriori informazioni sulla versione della funzionalità, consulta<uses-feature android:name="android.hardware.vulkan.level" android:version="0" android:required="true" />
FEATURE_VULKAN_HARDWARE_LEVEL
. -
android.hardware.vulkan.version
-
L'app utilizza Vulkan. Questa funzionalità indica che l'app richiede l'implementazione di Vulkan con accelerazione hardware. La versione della funzionalità indica la versione minima del supporto dell'API Vulkan richiesta dall'app. Ad esempio, se la tua app richiede il supporto di Vulkan 1.0, dichiara la
seguente funzionalità:
Per ulteriori dettagli sulla versione della funzionalità, consulta<uses-feature android:name="android.hardware.vulkan.version" android:version="0x400003" android:required="true" />
FEATURE_VULKAN_HARDWARE_VERSION
.
Funzionalità hardware del Wi-Fi
-
android.hardware.wifi
- L'app utilizza le funzionalità di rete 802.11 (Wi-Fi) sul dispositivo.
-
android.hardware.wifi.direct
- L'app utilizza le funzionalità di rete Wi-Fi Direct sul dispositivo.
Funzionalità del software
Questa sezione presenta le funzionalità software supportate dalla release della piattaforma più recente. Per indicare che la tua app utilizza o richiede una funzionalità di software, dichiara il valore corrispondente, che inizia con "android.software"
, in un attributo android:name
.
Ogni volta che dichiari una funzionalità software, utilizza un elemento <uses-feature>
distinto.
Funzionalità del software di comunicazione
-
android.software.sip
- L'app utilizza i servizi Session Initiation Protocol (SIP). Grazie all'utilizzo di SIP, l'app può supportare le operazioni di telefonia su internet, come le videoconferenze e la messaggistica istantanea.
-
android.software.sip.voip
-
L'app utilizza servizi VoIP (Voice over Internet Protocol) basati su SIP. Con l'utilizzo del VoIP, l'app può supportare operazioni di telefonia internet in tempo reale, come le videoconferenze bidirezionali.
Se un'app utilizza questa funzionalità, implica che utilizzi anche la funzionalità
android.software.sip
, a meno che questa funzionalità principale non sia dichiarata conandroid:required="false"
. -
android.software.webview
- L'app mostra contenuti di internet.
Funzionalità del software di input personalizzato
-
android.software.input_methods
-
L'app utilizza un nuovo metodo di inserimento, definito dallo sviluppatore in un
InputMethodService
.
Funzionalità del software di gestione dei dispositivi
-
android.software.backup
- L'app include la logica per gestire un'operazione di backup e ripristino.
-
android.software.device_admin
- L'app utilizza gli amministratori dei dispositivi per applicare un criterio del dispositivo.
-
android.software.managed_users
- L'app supporta utenti secondari e profili gestiti.
-
android.software.securely_removes_users
- L'app può rimuovere definitivamente gli utenti e i relativi dati associati.
-
android.software.verified_boot
- L'app include la logica per gestire i risultati della funzionalità di avvio verificato del dispositivo, che rileva se la configurazione del dispositivo cambia durante un'operazione di riavvio.
Funzionalità del software multimediale
-
android.software.midi
- L'app si connette a strumenti musicali o emette suoni utilizzando il protocollo MIDI (Musical Instrument Digital Interface).
-
android.software.print
- L'app include comandi per la stampa dei documenti visualizzati sul dispositivo.
-
android.software.leanback
- L'app è progettata per funzionare sui dispositivi Android TV.
-
android.software.live_tv
- L'app trasmette in streaming programmi televisivi in diretta.
Funzionalità del software dell'interfaccia dello schermo
-
android.software.app_widgets
- L'app utilizza o fornisce widget di app ed è destinata solo ai dispositivi che includono una schermata Home o una posizione simile in cui gli utenti possono incorporare widget di app.
-
android.software.home_screen
- L'app si comporta come sostituto della schermata Home del dispositivo.
-
android.software.live_wallpaper
- L'app utilizza o fornisce sfondi che includono animazioni.
Autorizzazioni che implicano requisiti delle funzionalità
Alcune costanti delle funzionalità hardware e software vengono rese disponibili per le applicazioni dopo l'API corrispondente. Per questo motivo, alcune app potrebbero utilizzare l'API prima di poter dichiarare di richiedere l'API utilizzando il sistema <uses-feature>
.
Per impedire che queste app vengano rese disponibili involontariamente, Google Play assume che determinate autorizzazioni relative all'hardware indichino che le funzionalità hardware di base sono richieste per impostazione predefinita. Ad esempio,
le applicazioni che utilizzano il Bluetooth devono richiedere l'autorizzazione BLUETOOTH
in un elemento <uses-permission>
.
Per le app legacy, Google Play presume che la dichiarazione delle autorizzazioni indichi che la funzionalità android.hardware.bluetooth
sottostante è richiesta dall'applicazione e configura il filtro in base a questa funzionalità. La tabella 2 elenca le autorizzazioni che implicano requisiti delle funzionalità equivalenti a quelli dichiarati negli elementi <uses-feature>
.
Le dichiarazioni <uses-feature>
, inclusi gli attributi android:required
dichiarati, hanno sempre la precedenza sulle funzionalità implicite delle autorizzazioni nella tabella 2. Per qualsiasi di queste autorizzazioni,
puoi disattivare il filtro in base alla funzionalità implicita dichiarandola esplicitamente
in un elemento <uses-feature>
con l'attributo required
impostato su false
.
Ad esempio, per
disattivare il filtro in base all'autorizzazione CAMERA
, aggiungi le
seguenti dichiarazioni CAMERA
al file manifest:<uses-feature>
<uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
Attenzione: se la tua app ha come target Android 5.0 (livello API 21) o versioni successive e utilizza l'autorizzazione ACCESS_COARSE_LOCATION
o ACCESS_FINE_LOCATION
per ricevere aggiornamenti sulla posizione dalla rete o da un GPS, devi anche dichiarare esplicitamente che la tua app utilizza le funzionalità hardware android.hardware.location.network
o android.hardware.location.gps
.
Tabella 2. Autorizzazioni del dispositivo che implicano l'utilizzo dell'hardware del dispositivo.
Categoria | Autorizzazione | Requisito di funzionalità implicita |
---|---|---|
Bluetooth | BLUETOOTH |
android.hardware.bluetooth
Per maggiori dettagli, vedi Gestione speciale della funzionalità Bluetooth. |
BLUETOOTH_ADMIN |
android.hardware.bluetooth |
|
Fotocamera | CAMERA |
android.hardware.camera android.hardware.camera.autofocus |
Posizione | ACCESS_MOCK_LOCATION |
android.hardware.location |
ACCESS_LOCATION_EXTRA_COMMANDS |
android.hardware.location |
|
INSTALL_LOCATION_PROVIDER |
android.hardware.location |
|
ACCESS_COARSE_LOCATION |
|
|
ACCESS_FINE_LOCATION |
|
|
Microfono | RECORD_AUDIO |
android.hardware.microphone |
Telefonia | 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 |
|
Wi-Fi | ACCESS_WIFI_STATE |
android.hardware.wifi |
CHANGE_WIFI_STATE |
android.hardware.wifi |
|
CHANGE_WIFI_MULTICAST_STATE |
android.hardware.wifi |