Android java.lang.SecurityException: Autorisation de Déni: l'Intention de départ
J'ai une bibliothèque (en pot) sur le chemin de compilation de mon projet. Le projet accède à la MainActivity dans le pot, à l'aide de la suite de l'intention:
final Intent it = new Intent();
it.setClassName("com.example.lib", "com.example.lib.MainActivity");
startActivity(it);
Il l'habitude de travailler pendant un certain temps, mais tout à coup commencé à recevoir des 'ActivityNotFoundException: Aucune Activité trouvée pour traiter Intention" qui j'ai été en mesure de résoudre. Mais maintenant je suis coincé avec un 'java.lang.SecurityException: Autorisation de Déni: départ Intention".
J'ai essayé toutes les suggestions sur stackoverflow (vérifier les doublons dans le fichier de manifeste; ajouter android:exportées="true" pour la lib manifeste; Eclipse> Projet> Propre; l'ajout/la modification de l'intention du filtre des " balises, etc.). J'ai même essayé de ré-écrire le manifeste du projet, mais il ne va pas n'importe où avec elle.
Voici le logcat de sortie:
11-07 06:20:52.176: E/AndroidRuntime(4626): FATAL EXCEPTION: main
11-07 06:20:52.176: E/AndroidRuntime(4626): java.lang.SecurityException: Permission Denial: starting Intent { cmp=com.example.lib/.MainActivity } from ProcessRecord{40dd3778 4626:com.example.project/u0a10046} (pid=4626, uid=10046) not exported from uid 10047
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.os.Parcel.readException(Parcel.java:1425)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.os.Parcel.readException(Parcel.java:1379)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1885)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1412)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Activity.startActivityForResult(Activity.java:3370)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Activity.startActivityForResult(Activity.java:3331)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:824)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Activity.startActivity(Activity.java:3566)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Activity.startActivity(Activity.java:3534)
11-07 06:20:52.176: E/AndroidRuntime(4626): at com.example.project.MainActivity.onOptionsItemSelected(MainActivity.java:93)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Activity.onMenuItemSelected(Activity.java:2548)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:366)
11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:980)
11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:547)
11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:115)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.view.View.performClick(View.java:4204)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.view.View$PerformClick.run(View.java:17355)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.os.Handler.handleCallback(Handler.java:725)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.os.Handler.dispatchMessage(Handler.java:92)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.os.Looper.loop(Looper.java:137)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.ActivityThread.main(ActivityThread.java:5041)
11-07 06:20:52.176: E/AndroidRuntime(4626): at java.lang.reflect.Method.invokeNative(Native Method)
11-07 06:20:52.176: E/AndroidRuntime(4626): at java.lang.reflect.Method.invoke(Method.java:511)
11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-07 06:20:52.176: E/AndroidRuntime(4626): at dalvik.system.NativeStart.main(Native Method)
Manifeste XML du Projet:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.project"
android:versionCode="4"
android:versionName="4.0" >
<!-- Permissions -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<supports-screens android:anyDensity="true" />
<!-- SDK Settings -->
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="18" />
<!-- APP Start -->
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<!-- App Activity -->
<activity
android:name="com.example.project.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Library Activity -->
<activity android:name="com.example.lib.MainActivity" android:label="LibMain">
<intent-filter>
<action android:name="android.intent.action.MAIN"></action>
</intent-filter>
</activity>
</application>
<!-- END - APP -->
</manifest>
Ce que je suis dominant? Des suggestions?
MODIFIER
J'ai mis à jour le manifest.xml avec toutes les autres activités & en quelque sorte, que le problème est résolu. Le but de l'activité démarre sans erreurs. MAIS, ce n'est que sur les AVD. Sur le périphérique, il se jette toujours la même erreur. J'ai désinstallé l'application à partir de l'appareil complètement et réinstallé, mais le même message d'erreur.
- Aussi essayé: projet> Java Build Path> de l'Ordre et de l'Exportation> mettre cocher sur le fichier jar> Projet de Nettoyage du Même erreur lors de l'ouverture de l'objectif.
- stackoverflow.com/a/8784878/2624806 peut aider ici
Vous devez vous connecter pour publier un commentaire.
L'exception est clair. Vous devez définir
android:exported="true"
dans votreAndroidManifest.xml
fichier où vous déclarez cetteActivity
.Modifier
android:exported="true"
dans le projet manifest.xml fichier sous<activity android:name="com.example.lib.MainActivity"
. Me donne la même erreur.intent-filter
et essayez de nouveau.<activity "com.example.lib.MainActivity" android:label="LibMain" android:exported="true"> </activity>
Toujours la même erreurit.setComponent(new ComponentName("com.example.lib", "com.example.lib.MainActivity"));
au lieu deit.setClassName
final Intent it = new Intent(this, com.example.lib.MainActivity); startActivity(it);
..new Intent(this, com.example.lib.MainActivity);
n'a pas aidé non plus. J'ai apporté quelques modifications à manifest.xml et il a commencé à travailler sur les AVD, mais sur un appareil, ça en jette toujours la même "SecurityException: Autorisation Refus d'erreur". J'ai fait plusieurs désinstaller/ ré-installe avec pas de chance. Je ne sais pas pourquoi il en serait de travailler sur les AVD et pas sur un périphérique.exported=true
, mais lorsque j'utilise le périphérique réel, il va jeter le SecurityException.android:exported="true"
résolu le problème pour moi aussiCe n'est que pour android studio
J'ai donc rencontré ce problème récemment. La question est dans le build/run configuration. Apparemment, android studio a choisi une activité dans mon projet que le lancement de l'activité sans tenir compte de mon choix dans le fichier manifest.
Cliquez sur le nom du module, juste à gauche du bouton "démarrer" et cliquez sur "Modifier les configurations..." Maintenant, assurez-vous que "Lancement d'Activité par défaut" est sélectionné.
Le plus drôle, quand j'ai eu cette erreur était que je pouvais encore le lancement de l'application à partir de l'appareil et on commence avec l'Activité préférée. Mais le lancement de l'IDE semblait impossible.
Sélectionnez votre configuration appropriée pour lancer l'Application.
Dans mon cas, j'ai trouvé l'erreur dans l'image ci-dessous:
J'avais juste changé comme:
Peut-il aider à quelqu'un, Merci 🙂
Ajouter android:exportées="true" dans votre com.exemple.lib.MainActivity l'activité de la balise.
À partir de l'android:exportations de la documentation,
De votre logcat de sortie, clairement un décalage entre l'uid est à l'origine du problème. Ainsi, l'ajout de l'android:exportées="true" devrait faire l'affaire.
Similaire à Olayinka réponse sur le fichier de configuration de l'ADT: je viens d'avoir le même problème sur IntelliJ est IdeaU v14.
Je travaille par le biais d'un tutoriel qui m'a fait changer de départ de l'activité de
MyActivity
àMyListActivity
(Qui est une liste deMyActivity
). J'ai commencé à obtenir des Autorisations de la Négation.Après beaucoup d'essais, de la fatigue et de la douleur: Dans .idea\workspace.xml:
J'ai changé le
MyActivity
àMyListActivity
, rechargé le projet et je suis hors d'un rouleau à recommencer.Pas sûr que l'IDE que vous utilisez, mais peut-être que votre IDE est de la substitution ou de forcer un départ spécifique de l'activité?
Si vous essayez de tester votre application codée dans android studio par le biais de votre téléphone android, il est en général le problème de votre téléphone. Il suffit de décocher toutes les options de débogage USB et activer /désactiver les options pour les développeurs à OFF. Ensuite, redémarrez votre téléphone et mettez le développeur et le débogage USB sur. Vous êtes prêt à aller!
Dans mon cas, cette erreur était due à une mauvaise chemins utilisés pour spécifier les intentions de mes préférences fichier xml après j'ai renommé le projet. Par exemple, où j'ai eu:
J'avais besoin de ce qui suit:
Corriger les noms de chemin d'accès fixe le problème.
si nous faisons le particulier
activity
commeil sera le lancement
activity
.Cliquez sur le nom du module, juste à gauche de l'exécuter
button
et cliquez sur "Modifier les configurations..." Maintenant, assurez-vous que"Launch default Activity"
est sélectionné.