GetBoolean (Extra_no_connectivity) всегда возвращает false

Единственный раз, когда у меня был проблема, вы, ребята, были действительно полезными. Итак, вот я снова с другой проблемой, которую я упал на ...: /

Я использую пользовательский сетевой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

Спасибо!

5
задан snoopaki 30 August 2011 в 15:31
поделиться