Her birkaç dakikada bir kablosuz tarama başlatmak için AlarmManager
(setRepeating
ile) kullanarak bir PendingIntent
kullanıyorum (IntentService
kullanarak). Çoğu cihazda ve çoğu durumda, bununla ilgili bir sorun yoktur.SecurityException
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)
...
Benim uygulamasından PendingIntent
yaratıyorum: Ancak birkaç cihaz üzerinde aşağıdaki hatayı alıyorum (. Herhangi bir test cihazda hatayı yeniden Could Bu kullanıcının cihazdan kilitlenme günlük olan) bu yüzden WifiManager
'dan atılan SecurityException
için bir neden göremiyorum (Bu özellikle nadiren gerçekleştiği için). bu neden ne
mContext.registerReceiver(mWifiScanReceiver, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
boolean ok = mWifiManager.startScan();
Herhangi bir fikir şöyledir:
PendingIntent
koddan başlattı IntentService
Bu Bildiriminize içine biraz eklemeye çalıştım, bu android.permission.INTERACT_ACROSS_USERS_FULL veya android.permission.INTERACT_ACROSS_USERS premission gerektirdiğini söylüyor? –
@ Berťák, bu izin bir sistem izni ve hiçbir uygulama (bir sistem uygulaması olmadığı sürece) bunu isteyebilir. Ayrıca, 'startScan'ı çağırmak ve sonuçları 'SCAN_RESULTS_AVAILABLE_ACTION' üzerinden yayınlamak için gerekli değildir. Garip olan şey budur ... – Muzikant
IntentService'iniz farklı bir kullanıcı bağlamında çalışır. Telefonunuzda bir veya daha fazla kullanıcı oturum açmış gibi görünüyor. – ShihabSoft