java.lang.SecurityException : Autorizzazione Denial ; questo richiede android.permission.INTERACT_ACROSS_USERS_FULL

? resus @ | Original: StackOverFlow
---

Nella mia applicazione ho bisogno di avviare l' attività principale in questo modo, come documentato in diversi altri thread su SO :

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

La riga di codice precedente è nel mio progetto di biblioteca Android come non so in questo luogo la classe di mia principale attività.

Questo funziona come un fascino durante la distribuzione app Trough l'interfaccia USB sui dispositivi di test, ma questo errore si verifica quando si installa app da Google Play su 4.3 dispositivi .

Qualcuno ha avuto lo stesso problema ?

Edit : Non ho detto che diversi thread in SO detto che " android.permission.INTERACT_ACROSS_USERS_FULL è un'autorizzazione di livello di firma . La vostra applicazione non sarà in grado di utilizzare fino a quando e se non ha la stessa firma del sistema . "

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

Ma, come il codice di cui sopra sembra essere utilizzato da altri sviluppatori, sto ancora sperando in una soluzione .

Edit 2 : Rimuovere pila non relative al problema .

---

Top 5 Risposta

1My God @

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

android.permission.INTERACT_ACROSS_USERS_FULL È un'autorizzazione di livello di firma . L'applicazione non sarà in grado di utilizzare fino a meno ha la stessa firma del sistema .

UPDATE:

Avete il android.permission.WRITE_EXTERNAL_STORAGE ?

Questo collegamento può aiutare - 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 @

Purtroppo il sistema non ha fatto :

throw any exception log the cause of the error

L'eccezione nella mia interrogazione non era collegato al problema e non è stato registrato su altri dispositivi .

Abbiamo usato seguente soluzione che funziona su tutti i dispositivi per il momento di risolvere il problema :

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 @

E 'meglio utilizzare questo nel file manifest

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

Assicurarsi di non aver dimenticato di aggiungere una attività al vostro manifesto.