質問

登録しました ConnectivityManager.CONNECTIVITY_ACTION ネットワーク状態イベントを受けるためのBroadCastReceiver、しかし私の onReceive WiFi接続をオンまたはオフにすると、機能が呼び出されません。

ドキュメントで述べたように、これは登録時に解雇される粘着性の放送レシーバーです。

しかし、私は自分のイベントを取得していません onReceive このレシーバーに登録すると機能しますが、原因は何ですか?

マニフェストファイルには、インターネット/ネットワーク/WiFi接続とその状態にアクセスするためのすべての許可があります。

次のコードを使用して、この意図で登録しています。

registerReceiver(mNetworkStateReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));

私のログキャットでは、このブロードキャストレシーバーの次のエラーメッセージ登録を取得します。

01-01 00:05:29.804: ERROR/WifiHW(1305): Unable to open connection to supplicant on "/data/system/wpa_supplicant/wlan0": Connection refused

原因は何でしょうか? BroadCastReceiverが適切に登録されているかどうかを知る方法はありますか?

ありがとう。

役に立ちましたか?

解決

これは私にとってはうまくいきます:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<receiver android:name=".receiver.ConnectivityReceiver">
   <intent-filter>
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
   </intent-filter>
</receiver>

コード:

public class ConnectivityReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
      Log.d(ConnectivityReceiver.class.getSimpleName(), "action: "
              + intent.getAction());
  }
}

すべてのネットワーク許可を登録することを忘れないでください。

他のヒント

マニフェストファイルを使用して試してみてください

<receiver android:name=".MyNetworkStateReceiver" >
    <intent-filter >
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

クラス MyNetworkStateReceiver 拡張する必要があります BroadcastReceiver

下位レベルの問題のように見えます - グーグルでエラーをグーグルで、複数のROMハッキングフォーラムとそのWiFiの誤動作が明らかになります。何でテストしていますか?別のデバイスまたはエミュレータでテストを試してみてください。 (私はあなたがあなたのものを再起動しようとしたと思います:))

また、アクティビティ/サービスが破壊されたら、受信機の登録解除を確認してください(これは接続エラーと関係があるかもしれません)

PS私はあなたが言ったことを知っていますが、それでもあなたが持っていることを再確認してください

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

あなたのマニフェストで。

また、インターネット、WiFi、マルチキャストロックのアクセス許可を取得してみてください。これらを許可に追加してみてください。

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>

ネットワークデータを送信および受信するためにWiFiだけでなく、CのSDKを通してフィルタリングできるあらゆるタイプのネットワークアダプター(LAN、無線)を使用するハウスインアプリケーションにこれらの許可を使用する必要があります(デバイス)ルート化する必要があります)。しかし、これらの許可を使用しても問題ありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top