Мое приложение выполняет некоторую сборку данных backgound, и я добавляю поддержку сетевых настроек пользователя, например, выполнение обновлений фона и роуминга данных. У меня есть следующие проверки уже:Как уважать настройки использования сети в Android
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm.getBackgroundDataSetting()) {
...
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected()) {
с необходимыми записями в манифесте:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
Это все, кажется, работает хорошо, но мне было интересно, если я должен проверять что-нибудь еще? Я беспокоился о проверке роуминга данных, но docs заявляет, что networkInfo.isAvailable()
проверяет это для меня. Так есть ли какие-либо другие проверки, которые мне нужно реализовать для сетевых настроек? Что-нибудь еще в этой области я должен знать?
Хороший вопрос. У сетевой информации также нет метода isRoaming. (И вы разрабатываете приложение только для Северной Америки, если это не проблема, поскольку сетевой протокол может быть другим). –
Да, существует метод 'isRoaming()'. Я не использовал его до тех пор, пока 'networkInfo.isAvailable()', похоже, возвращает 'false', если сеть находится в роуминге, и пользователь отключил Data Roaming. Приложение будет только для Великобритании. Я не думаю, что ** это влияет на код, который у меня есть до сих пор, но если бы я должен был выполнить некоторые проверки в ответах, мне пришлось бы проверять другую NETWORK_TYPE , –
Мне было любопытно. Я просмотрел исходный код и документацию. isNetworkAvilable является надежным, как и любой, поскольку он проверяет, находитесь ли вы в домашней сети или нет. (в конце концов, если он терпит неудачу, ваше приложение не единственное в беде;)) –