Единственный раз, когда у меня был проблема, вы, ребята, были действительно полезными. Итак, вот я снова с другой проблемой, которую я упал на ...: /
Я использую пользовательский сетевойReceiver, который расширяет широковещатель. Я хочу обнаружить, когда у телефона есть подключение к интернету, чтобы я мог начать сервис всякий раз, когда он делает. Я прочитал много тем, и все темы более или менее приглашенные к следующему коду, который не работает для меня:
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-phone (у него нет SIM, доступ в Интернет - мой WiFi маршрутизатор), отключив маршрутизатор -> Нет гарантированного доступа в Интернет!
Мой манифест включает в себя следующие строки:
...
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<receiver android:name=".NetworkReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
...
Я также должен отметить, что я также пробовал
В моем файле манифеста без изменений и что, когда я изменил линию:
Intent.GetBooleAnextra (ConnectivityManager.extra_no_connectivity, false)
к
Intent.GetBooleakextra (ConnectivityManager.extra_no_Connectivity, TRUE)
Результатом всегда был правдой - и, таким образом, он всегда пытался остановить мой сервис и никогда не начать его.
Я подозреваю, что дополнения от намерения вообще не читаются, и поэтому значение по умолчанию GetBooleakextra ()
всегда возвращается.
PS. Я нахожусь на Android 2.1
Спасибо!