java.lang.SecurityException : Permission Denial ; Dies erfordert android.permission.INTERACT_ACROSS_USERS_FULL

? resus @ | Original: StackOverFlow
---

In meiner Anwendung ich muss die Haupttätigkeit beginnen die folgende Art und Weise wie in mehreren anderen Threads auf SO dokumentiert:

final String packageName = getApplicationContext().getPackageName();
final Intent launchIntent = getPackageManager().getLaunchIntentForPackage(packageName);
startActivity(launchIntent);

Die obige Codezeile ist in meinem Android Bibliotheksprojekt, da ich nicht an dieser Stelle wissen, die Klasse meiner Haupttätigkeit .

Dies wirkt wie ein Zauber bei der Bereitstellung von App Trog die USB-Schnittstelle an Testgeräten, aber bei der Installation von App von Google Play auf 4,3 Geräte dieser Fehler auftritt.

Hat jemand erlebt das gleiche Problem?

edit: Ich habe nicht erwähnt, dass mehrere Threads in SO erwähnt, dass " android.permission.INTERACT_ACROSS_USERS_FULL ist eine Signatur- Ebene Erlaubnis. Ihre Anwendung nicht in der Lage, bis zu verwenden und, wenn es die gleiche Signatur wie das System hat . "

http://stackoverflow.com/questions/18179159/permission-denial-startactivity-asks-to-run-as-user-2-but-is-calling-from-user  http://stackoverflow.com/questions/20578474/permission-denial-this-requires-android-permission-interact-across-users-full?lq=1  http://stackoverflow.com/questions/19756727/what-do-i-do-about-this-requires-android-permission-interact-across-users-full/19756762#19756762

Aber wie der obige Code scheint von anderen Entwicklern verwendet werden, bin ich immer noch in der Hoffnung auf eine Lösung .

Edit 2 : Entfernen Stapel nicht begründet.

---

Top 5 Antwort

1My God @

Zitat aus http://stackoverflow.com/questions/19756727/what-do-i-do-about-this-requires-android-permission-interact-across-users-full .

android.permission.INTERACT_ACROSS_USERS_FULL Ist eine Signatur- Ebene Erlaubnis. Ihre Anwendung wird nicht in der Lage, bis zu verwenden und, wenn es die gleiche Signatur wie das System hat .

UPDATE:

Haben Sie die android.permission.WRITE_EXTERNAL_STORAGE ?

Dieser Link kann Ihnen helfen - http://stackoverflow.com/questions/7203668/how-permission-can-be-checked-at-runtime-without-throwing-securityexception

Your concern -

PackageManager pm = context.getPackageManager();
int hasPerm = pm.checkPermission(
    android.Manifest.permission.WRITE_EXTERNAL_STORAGE, 
    context.getPackageName());
if (hasPerm != PackageManager.PERMISSION_GRANTED) {
   // do stuff
}
2resus @

Leider war das System nicht :

throw any exception log the cause of the error

Die Ausnahme in meiner Frage wurde nicht mit dem Problem und nicht auf anderen Geräten protokolliert.

Wir haben folgende Problemumgehung, die auf allen Geräten funktioniert denn nun das Problem zu lösen :

protected void startMainActivityWithWorkaround() throws NameNotFoundException, ActivityNotFoundException {
    final String packageName = getPackageName();
    final Intent launchIntent = getPackageManager().getLaunchIntentForPackage(packageName);
    if (launchIntent == null) {
      Log.e(LOG_TAG, "Launch intent is null");
    } else {
      final String mainActivity = launchIntent.getComponent().getClassName();
      Log.d(LOG_TAG, String.format("Open activity with package name %s / class name %s", packageName, mainActivity));
      final Intent intent = new Intent(Intent.ACTION_MAIN);
      intent.addCategory(Intent.CATEGORY_LAUNCHER);
      intent.setComponent(new ComponentName(packageName, mainActivity));
      // optional: intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      startActivity(intent);
    }
}
3Parthi @

Es ist besser, diese in Ihrer Manifest-Datei verwenden

    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
4user2812818 @

Überprüfen Sie, ob Sie nicht vergessen, eine Aktivität, um Ihre Manifest hinzuzufügen.