2017-01-03 4 views
1

ich die folgende Berechtigung für die manifest deklariert haben:ACCESS_WIFI_STATE Fehler auf Emulator

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

Und je die docs ist es eine normale Erlaubnis so dass keine Notwendigkeit zur Laufzeit auf Geräte mit Android M anfordern oder höher.

Die App ist abgestürzt, aber ich habe auf mehreren Geräten (mit Android N) getestet und die App funktioniert hat erwartet. Irgendeine Idee, warum es auf einem Emulator mit Android SDK für x86 mit Android 7.0 abgestürzt ist?

Hier wird der Stacktrace ist:

Fatal Exception: java.lang.SecurityException: WifiService: Neither user 10076 nor current process has android.permission.ACCESS_WIFI_STATE. 
     at android.os.Parcel.readException(Parcel.java:1683) 
     at android.os.Parcel.readException(Parcel.java:1636) 
     at android.net.wifi.IWifiManager$Stub$Proxy.getWifiEnabledState(IWifiManager.java:1198) 
     at android.net.wifi.WifiManager.getWifiState(WifiManager.java:1455) 
     at android.net.wifi.WifiManager.isWifiEnabled(WifiManager.java:1467) 
... 

Antwort

0

mit WifiManager zu arbeiten, wenn die Verbindungen Scannen von Android 6.0 es Ihren Standort zugreifen muss, so dass entweder die schöne Lage oder die grobe Lage ist, Fügen Sie den folgenden zu Manifes.xml:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
+0

ich schon Habe beide diese Berechtigungen deklariert. Das Problem ist, dass ich dieses Verhalten nur auf dem Emulator gesehen habe. Running ein Gerät mit Android N stürzte nicht die App – Favolas

0

Da Android M (6+) haben Sie die Benutzer für Berechtigungen während der Laufzeit zu fragen, wie iOS-Anwendungen zum Beispiel.

Sie die here docs lesen können, eine schnelle Lösung ist es, eine Bibliothek zu verwenden, zB EasyPermission oder EasyPermission

https://github.com/jineshfrancs/EasyPermission

https://github.com/lalosoft/EasyPermissions

Verbrauch:

easyPermission.requestPermission(this, Manifest.permission.ACCESS_WIFI_STATE); 
+0

'ACCESS_NETWORK_STATE' ist eine normale Erlaubnis, so dass keine Notwendigkeit, es zur Laufzeit zu stellen – Favolas

+0

@ Favolas Hoppla, mein Schlechter. Ich habe die Antwort jetzt korrigiert – timbillstrom

Verwandte Themen