私はprobを1回、皆さんは本当に役に立ちました。だから私は再び私が落ちた別の問題を抱えています:/getBoolean(EXTRA_NO_CONNECTIVITY)は常にfalseを返します
私はBroadcastReceiverを拡張するカスタムNetworkReceiverを実行しています。電話がインターネットに接続されていることを検出して、いつでもサービスを開始できるようにしたい。私は、トピックをたくさん読んで、すべてのトピック多かれ少なかれ私のために動作しません、次のコードにプロンプトしている:
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ルーターである)で試しました。 intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)
intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true)
へ:
...
<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>
...
私も、私はラインを変更したときに、私はまた、変更なしとし、というのが私のマニフェストファイルに <action android:name="android.net.ConnectivityManager.CONNECTIVITY_ACTION" />
をしようとしたことに注意してください:
私のマニフェストには、以下の行を含んでいますその結果は常に真実でした。そして、それはいつも私のサービスを止めようと試み、決してそれを開始しませんでした。
私はインテントのエクストラが全く読まれないと思うので、デフォルト値のgetBooleanExtra()
は常に返されます。
PS。私はAndroid 2.1にいる
ありがとう!
私はあなたが使用した方法に気付いています。しかし、私は少し多くの人々が私が使用したコードを推奨して驚いた(私はまた、最近Androidで購入したO'reillyの本でそれを読んだ!)私がCONNECTIVITY_ACTIONブロードキャストで解決策を見つけることができない場合は、私はあなたの例に従い、ConnectivityManagerのメソッドで私のサービスのチェックを行うと思います。返信ありがとう:) – snoopaki
あなたは@ snoopakiを歓迎しています - 私はあなたの方法を使って解決策を取ってくることを望んでいましたが、何が起きているのか、なぜ起こっているのか分かりません。 – Shlublu
私は実際に私のサービスをIntentServiceに変更し、接続変更のインサービス処理はより意味がありました。だから私は適切に正しい答えを選ぶべきです! thx :) – snoopaki