3

私のアプリの1つで、WiFiの状態を変更しています。このような:

wifiManager.setWifiEnabled(false);

マニフェストに次の権限があります。

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

コードは私の電話と他のほとんどの電話で完全に機能しています。しかし、今日、私は次のエラーでクラッシュレポートを受け取りました:

Caused by: java.lang.SecurityException: NetworkManagementService: Neither user 10147 nor current process has android.permission.CHANGE_NETWORK_STATE.

スタックトレースは、このエラーがWiFi状態unsigを変更している回線が原因であることを示していますwifiManager.setWifiEnabled(false);

なぜこれが起こるのですか?ほとんどすべてのデバイスで問題なく動作するのはなぜですか?また、この特定のケースでクラッシュしたのはなぜですか?Androidのバージョンまたはデバイスに依存しますか?WiFiの状態を変更するためだけに、本当にandroid.permission.CHANGE_NETWORK_STATEアクセス許可を追加する必要がありますか?

4

1 に答える 1

3

CHANGE_NETWORK_STATEのドキュメントにAllows applications to change network connectivity stateは、アクセス許可を追加する必要があると書かれているので、そうです。Wi-Fiを無効にすると、ネットワークの状態が変わる可能性が高くなるようです。

この特定のケースで発生した理由については、以前にテストしたことのないバージョンのAndroidで実行されていることが原因である可能性があります。

于 2012-10-29T16:21:34.077 に答える