Ich verwende eine PendingIntent
gestartet von AlarmManager
(mit setRepeating
), um Wifi-Scans (mit IntentService
) alle paar Minuten zu starten. Auf den meisten Geräten und in den meisten Fällen gibt es kein Problem damit. jedoch auf mehrere Geräte, die ich die folgende Fehlermeldung (zu. Den Fehler auf jedem Testgerät nicht reproduzieren Dies ist ein Crash-Protokoll von einem Gerät des Benutzers):SecurityException ausgelöst beim Aufrufen von WifiManager StartScan
java.lang.RuntimeException: Unable to start service [email protected] with Intent { act=com.myapp.android.ACTION_PERFORM_WIFI_SCAN flg=0x4 cmp=com.myapp/com.mayapp.android.service.MyService (has extras) }: java.lang.SecurityException: Permission Denial: broadcast from android asks to run as user -1 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL or android.permission.INTERACT_ACROSS_USERS
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3021)
at android.app.ActivityThread.-wrap17(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1443)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5415)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:725)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:615)
Caused by: java.lang.SecurityException: Permission Denial: broadcast from android asks to run as user -1 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL or android.permission.INTERACT_ACROSS_USERS
at android.os.Parcel.readException(Parcel.java:1599)
at android.os.Parcel.readException(Parcel.java:1552)
at android.net.wifi.IWifiManager$Stub$Proxy.startScan(IWifiManager.java:1045)
at android.net.wifi.WifiManager.startScan(WifiManager.java:1088)
...
ich die PendingIntent
von meiner app zu schaffen also sehe ich keinen Grund für die SecurityException
geworfen von WifiManager
(zumal dies selten passiert).
Die IntentService
vom PendingIntent
Code gestartet ist wie folgt:
mContext.registerReceiver(mWifiScanReceiver, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
boolean ok = mWifiManager.startScan();
Alle Ideen, was dieses verursachen könnte?
Er sagt, dass es android.permission.INTERACT_ACROSS_USERS_FULL oder android.permission.INTERACT_ACROSS_USERS premission erfordert, haben Sie versucht, einige in Ihrem Manifest hinzufügen? –
@ Berťák, diese Erlaubnis ist eine Systemerlaubnis und keine App (es sei denn, es ist eine System-App) kann dies anfordern. Außerdem ist es nicht erforderlich, um 'startScan' aufzurufen und die Ergebnisse über die 'SCAN_RESULTS_AVAILABLE_ACTION'-Übertragung zu erhalten. Das ist, was es komisch macht ... – Muzikant
Es scheint, dass Ihr IntentService in einem anderen Benutzerkontext ausgeführt wird. Es scheint, dass sich ein oder mehrere Benutzer bei Ihrem Telefon angemeldet haben. – ShihabSoft