6

ConnectivityManager.CONNECTIVITY_ACTIONネットワーク状態イベントを受信するためにBroadcastReceiverに登録しましたがonReceive、wifi接続をオンまたはオフにしたときに関数が呼び出されません。

ドキュメントに記載されているように、これはスティッキーブロードキャストレシーバーであり、登録すると起動します。

しかしonReceive、このレシーバーに登録したときに関数でイベントが発生しません。原因は何でしょうか。

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

次のコードを使用して、このインテントで登録しています。

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

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

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

原因は何でしょうか?BroadcastReceiverが正しく登録されているかどうかを確認する方法はありますか?

ありがとう。

4

4 に答える 4

4

これは私のために働きます:

<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());
  }
}

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

于 2012-01-25T09:25:03.003 に答える
3

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

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

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

于 2012-01-22T13:14:33.133 に答える
0

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

また、アクティビティ/サービスが破壊された場合は、必ずレシーバーの登録を解除してください(これは接続エラーと関係がある可能性があります)

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

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

マニフェストで。

于 2012-01-23T13:31:59.377 に答える
0

インターネット、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(デバイスルート化する必要があります)。しかし、これらの権限を使用しても問題はありません。

于 2012-01-24T15:20:30.717 に答える