Moja aplikacja wykonuje pewne gromadzenie danych w tle i dodaje obsługę preferencji sieci użytkownika, takich jak wykonywanie aktualizacji w tle i roaming danych. Mam następujące kontrole już:Sposób przestrzegania ustawień korzystania z sieci w Androidzie
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm.getBackgroundDataSetting()) {
...
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected()) {
z wymaganych wpisów w manifeście:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
To wszystko wydaje się działać poprawnie, ale zastanawiałem się, czy powinienem być sprawdzenie czegokolwiek innego? Martwiłem się o sprawdzenie roamingu danych, ale docs stwierdza, że networkInfo.isAvailable()
sprawdza to dla mnie. Czy są jakieś inne kontrole, które muszę wprowadzić w celu ustawienia sieci? Coś jeszcze w tym obszarze powinienem być świadomy?
Dobre pytanie. Czy informacje o sieci również nie mają metody isRoaming. (Czy rozwijasz aplikację tylko na obszarze Ameryki Północnej, jeśli nie, może to stanowić problem, ponieważ protokół sieciowy może być inny). –
Tak, istnieje metoda 'isRoaming()'. Nie użyłem go, ponieważ 'networkInfo.isAvailable()' pojawia się zwracając 'false', jeśli sieć jest w roamingu i użytkownik wyłączył Roaming danych. Aplikacja będzie tylko w Wielkiej Brytanii - nie sądzę ** ma to wpływ na dotychczasowy kod, ale jeśli miałbym zaimplementować niektóre kontrole w odpowiedziach, musiałbym sprawdzić inne NETWORK_TYPE . –
Byłem ciekawy. Przeglądałem kod źródłowy i dokumentację. isNetworkAvilable jest niezawodny jak każdy inny, ponieważ sprawdza, czy jesteś w sieci domowej, czy nie. (W końcu, jeśli się nie uda, twoja aplikacja nie jest jedyną, która ma kłopoty;)) –