Absturz vor App-Start: SecurityException: Permission Denial: INTERACT_ACROSS_USERS_FULL

Hintergrund

Ich habe ein verwurzeltes Gerät, das ist Galaxy S3 I9300, mit Samsung Lager basiert ROM, basierend auf Android 4.3.

Ich hatte nie Probleme beim Ausführen einer App, mit der ich mit diesem Gerät arbeite.

Das Problem

Seit gestern (und ich habe nichts auf dem Gerät geändert), jedes Mal, wenn ich die App öffne, zeigt es für eine sehr kurze Zeit, schließt sich ohne Crash-Dialog noch zeigt es das nächste Log:

01-30 09:27:18.325: E/DatabaseUtils(2366): Writing exception to parcel 01-30 09:27:18.325: E/DatabaseUtils(2366): java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL 01-30 09:27:18.325: E/DatabaseUtils(2366): at com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:13140) 01-30 09:27:18.325: E/DatabaseUtils(2366): at android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2038) 01-30 09:27:18.325: E/DatabaseUtils(2366): at com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:607) 01-30 09:27:18.325: E/DatabaseUtils(2366): at android.content.ContentProvider$Transport.call(ContentProvider.java:279) 01-30 09:27:18.325: E/DatabaseUtils(2366): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:273) 01-30 09:27:18.325: E/DatabaseUtils(2366): at android.os.Binder.execTransact(Binder.java:388) 01-30 09:27:18.325: E/DatabaseUtils(2366): at dalvik.system.NativeStart.run(Native Method) 

Es kommt nicht einmal auf den Code der Klasse, der die Anwendung verlängert …

Was ich gefunden habe

Es scheint, dass dieses Problem sehr häufig ist (viele haben darüber berichtet), aber ich kann keine Lösung finden und warum es auftritt, anders als mit einem verwurzelten Gerät.

Die Leute sagen auch, dass die Erlaubnis, die hier geschrieben wird, tatsächlich eine Systemberechtigung ist, aber ich habe noch nie davon gehört, geschweige denn, es ist nicht sicher, was es ist.

Problem ist, die App, an der ich arbeite, hat nichts im Zusammenhang mit root, und das hat vor ein paar Tagen gearbeitet.

Ich habe versucht, den ROM (Omega ROM v54) neu zu installieren und auch alles im Zusammenhang mit dem xposed Framework zu deaktivieren. Es hat nicht geholfen

Die Frage

Wie kann ich dieses Problem beheben? Wie würde ich wissen, dass andere Benutzer dieses Problem nicht haben werden?

Ist es sogar mit verwurzelten Geräten verwandt?


EDIT: Ich dachte, ich habe eine Antwort gefunden, die es behebt, indem du "widerrufen USB-Debugging …" auf dem Entwickler-Bereich des Einstellungsbildschirms. Es schien zuerst zu arbeiten, aber später kam das Problem zurück und klickte es nicht mehr hilfsbereit …


EDIT: Ich denke, es ist nur ein Fehler auf der App selbst oder dem ROM, da ich es nicht mehr reproduzieren kann. Es ist ziemlich komisch, da ich mir ganz sicher bin, dass ich versucht habe, die App zu debuggen und einen Breakpoint auf die onCreate-Methode der Akitivität (und vielleicht auch der Anwendungsklasse selbst) zu setzen und es nicht aufzuhören.

  • PublisherAdView.loadAd () throwing SecurityException - getTasks () erfordert android.permission.GET_TASKS
  • Android-Lese-externen Speicher gibt securityException
  • WebView java.lang.SecurityException: Keine Berechtigung zum Ändern des angegebenen Threads
  • Android In App Billing SecurityException "Binder Aufruf zu einer falschen Schnittstelle"
  • Android: java.lang.SecurityException: Permission Denial: start Intent
  • SecurityException mit grantUriPermission beim Freigeben einer Datei mit FileProvider
  • SecurityException: Das Feld für dex.jar kann nicht gefunden werden
  • InApp Billing: java.lang.SecurityException Benötigt READ_PHONE_STATE
  • 4 Solutions collect form web for “Absturz vor App-Start: SecurityException: Permission Denial: INTERACT_ACROSS_USERS_FULL”

     01-30 09:27:18.325: E/DatabaseUtils(2366): java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL 

    Dieser Fehler kommt von wo Sie alle Benutzer- / Systemeinstellungen in Ihrer App get/set . Dieses spezielle Fehlerprotokoll zeigt Ihre Einstellungen an get/set von deinem App-Code USER_OWNER (von deinem App-Code), der von Benutzer 0 ( USER_OWNER ) USER_OWNER , aber die Einstellung, die du USER_OWNER , ist für Benutzer -2 ( USER_CURRENT ).

    Sie können die Einstellungen anderer Benutzer nicht ändern, ohne die Berechtigung android.permission.INTERACT_ACROSS_USERS_FULL .

    Sie sind wahrscheinlich nicht in Erwägung gezogen, wenn Sie unterschiedliche UserIDs haben (zwischen dem Aufruf von userID und der UserID, die die Einstellung vornimmt) in Ihrem Code und rufen set/get Einstellungen mit der falschen UserID (ich weiß nicht, warum sie anders sind, wenn dies ist Passiert – für ex, könnte es passieren, wenn es mehr als ein Benutzerkonten auf dem Gerät gibt).

    Sie müssen den Code ändern, um die korrekte UserID in die Logik zu übernehmen und die Einstellungen set/get für die entsprechende UserID eingestellt sind. (Die anrufende UserID und die UserID, für die die Einstellungen geändert werden sollen, sollten gleich sein).

    Du kannst versuchen, den Apk zu / System / App / zu verschieben und zu überprüfen, ob es dort funktioniert, denn da wird es als Benutzer 0 ausgeführt. Danach können Sie vielleicht beide Logs vergleichen (arbeiten und regelmäßig), um zu sehen, wo die App ist Stoppt

    Um es von deiner Shell zu installieren:

     adb remount adb push yourApp.apk /system/app/ adb reboot 

    Bewege deinen apk zu /system/app/ . Es wird nicht als Benutzer 0 ausgeführt werden, aber es erlaubt Ihnen, diese Berechtigung zu verwenden:

     android.permission.INTERACT_ACROSS_USERS_FULL 

    Ich habe diese SecurityException auf einer Android Wear-Uhr erlebt und es ist passiert, als ich eine Benachrichtigungsaktion durchgeführt habe. Ich kann es auch nicht reproduzieren, aber es bemerkt, dass es nur passiert, wenn ich die App mit der IDE oder der adb install . Ich habe es nie auf einem ordnungsgemäßen Bau gesehen, der von meinem Google Play Key signiert wurde.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.