Однажды, когда у меня возникла проблема, вы, ребята, были очень полезны. И вот я снова с другой проблемой, на которую я упал ...: /
Я использую пользовательский NetworkReceiver, который расширяет BroadcastReceiver. Я хочу определить, когда телефон подключен к Интернету, чтобы я мог запускать службу в любое время. Я прочитал много тем, и все темы более или менее подсказывают следующий код, который НЕ РАБОТАЕТ для меня:
public class NetworkReceiver extends BroadcastReceiver {
private static final String tag = NetworkReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent) {
Log.i(tag,"****** NetworkReceiver // onReceive()");
boolean noConnection = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
Log.i(tag,"****** NetworkReceiver // Network Down?: " + intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false));
}
// TODO Bug: Never stops the service. Stays always connected!
if(noConnection) {
Log.i(tag,"****** NetworkReceiver // Stopping Service...");
context.stopService(new Intent(context, FetchService.class));
} else {
Log.i(tag,"****** NetworkReceiver // Starting Service!");
context.startService(new Intent(context, FetchService.class));
}
}
У меня проблема в том, что logcat всегда возвращает NetworkDown?: false
, и служба никогда не останавливается (она перезапускается все время). Я попробовал это на эмуляторе, нажав F8, и я также попробовал это на своем dev-телефоне (у него нет SIM-карты, доступ в интернет через мой Wi-Fi роутер), выключив роутер -> доступ в интернет не гарантирован!
Мой манифест включает следующие строки:
* * 1010
Я должен также отметить, что я также пытался
<action android:name="android.net.ConnectivityManager.CONNECTIVITY_ACTION" />
в моем файле манифеста без изменений, и это, когда я изменил строку:
intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)
в
intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true)
результат всегда был правдивым - и поэтому он всегда пытался остановить мой сервис и никогда не запускать его.
Я подозреваю, что Дополнения из Намерения вообще не читаются, и поэтому всегда возвращается значение по умолчанию getBooleanExtra()
.
PS. Я на Android 2.1
Спасибо!