Domanda Permessi opzionali in modo che un'app possa essere visualizzata su tutti i dispositivi e abilitare funzionalità opzionali su alcuni?


Molte funzioni di Android richiedono un permesso di utilizzo per essere impostato nel manifest. Questi valori determinano quindi quali dispositivi li vedranno sul mercato. Tuttavia, che cosa dovrebbe essere fatto se la funzione è opzionale ... se potesse essere fatta funzionare su molti dispositivi, ma richiederebbe l'autorizzazione solo su alcuni?

Un esempio: diciamo un'app con più funzioni e una buona quantità di contenuti - e fornisce un pulsante per chiamare l'azienda. Questa è una funzione molto utile, invece di scrivere il numero o copiarlo e incollarlo nell'app del telefono. Non è essenziale, comunque.

Se questa funzione viene utilizzata e l'autorizzazione di telefonia viene aggiunta all'app, allora va tutto bene per i telefoni, ma nessun tablet vedrebbe l'app nel Market.

Qual è una soluzione generale per questo problema?

È possibile creare più app con autorizzazioni diverse, ma c'è un mondo di problemi con questo approccio (tempo di sviluppo extra, difficoltà a mantenere la manutenzione coerente, recensioni e valutazioni divise tra diverse app e se ci sono diversi tipi di permessi opzionali di un diverso potrebbe essere necessaria per ogni combinazione).

L'app potrebbe controllare a livello di codice se la funzione è disponibile e abilitarla o disabilitarla a seconda del dispositivo. Il problema è che se l'app non ha il permesso, si bloccherà se cercherà di usare quella funzione e, se ha l'autorizzazione, alcuni dispositivi non saranno in grado di trovare l'app nel Mercato.

In alcuni casi, potrebbe essere possibile eliminare completamente le funzioni non essenziali dall'app per evitare il problema. Nemmeno questa è una grande soluzione, poiché queste caratteristiche sarebbero "belle da avere" sui dispositivi che la supportano.

Sì, lo so È possibile avere permessi "opzionali" in Android? è una domanda simile. Sto sperando in nuove informazioni e per altri workaround che le persone hanno trovato, se del caso ... qual è la soluzione a questo problema? Qualcuno ha altri approcci oltre a quelli che ho elencato sopra?


35
2018-02-15 19:32


origine


risposte:


Qual è una soluzione generale per questo problema?

Per quel problema specifico, aggiungi <uses-feature android:name="android.hardware.telephony" android:required="false"/> al tuo manifest, per indicarlo Questo caratteristica è facoltativo. È quindi possibile utilizzare PackageManager e hasSystemFeature() per determinare se un dispositivo ha la funzione non richiesta in fase di esecuzione.


74
2018-02-15 19:35