La mia app esegue una raccolta di dati di backgound e sto aggiungendo il supporto per le preferenze di rete dell'utente, come l'esecuzione di aggiornamenti in background e il roaming dei dati. Ho i seguenti controlli: giàCome rispettare le impostazioni di utilizzo della rete in Android
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm.getBackgroundDataSetting()) {
...
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected()) {
con le voci necessarie nel manifesto:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
Tutto questo sembra funzionare bene, ma mi chiedevo se devo controllando ogni altra cosa? Ero preoccupato di verificare il roaming dei dati, ma lo stato docs è il networkInfo.isAvailable()
che verifica per me. Quindi ci sono altri controlli che devo implementare per le impostazioni di rete? Qualcos'altro in questo settore dovrei essere a conoscenza?
Buona domanda. Anche le informazioni di rete non hanno un metodo isRoaming. (E stai sviluppando app solo nell'area del Nord America, se non questo potrebbe essere un problema, dal momento che il protocollo di rete potrebbe essere diverso). –
Sì, esiste un metodo 'isRoaming()'. Non l'ho usato fino a quando 'networkInfo.isAvailable()' sembra restituire 'false' se la rete è in roaming e l'utente ha disabilitato il roaming dei dati. L'app sarà solo per il Regno Unito - non penso ** questo ha un effetto sul codice che ho finora, ma se dovessi implementare alcuni dei controlli nelle risposte dovrei controllare un diverso NETWORK_TYPE . –
Ero curioso. Ho consultato il codice sorgente e la documentazione. isNetworkAvilable è affidabile come qualsiasi, dal momento che controlla se sei nella rete di casa o meno. (dopotutto se fallisce, la tua applicazione non è l'unica in difficoltà;)) –