Android – java.lang.SecurityException: refus d’autorisation: début de l’intention

J’ai une bibliothèque (jar) sur le chemin de construction de mon projet. Le projet accède à MainActivity dans le jar en utilisant l’intention suivante:

final Intent it = new Intent(); it.setClassName("com.example.lib", "com.example.lib.MainActivity"); startActivity(it); 

Cela fonctionnait autrefois, mais soudainement, j’ai commencé à recevoir “ActivityNotFoundException: aucune activité pour gérer l’intention” que j’ai pu résoudre. Mais maintenant je suis coincé avec un ‘java.lang.SecurityException: Permission Denial: Intent de départ’.

J’ai essayé toutes les suggestions faites sur stackoverflow (vérifiez les doublons dans le fichier manifeste; ajoutez android: exports = “true” au manifeste de lib; Eclipse> Project> Clean; ajoutez / modifiez les balises “intent-filter”, etc.). J’ai même essayé de réécrire le manifeste du projet mais sans aller nulle part avec lui.

Voici la sortie logcat:

 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) 

Manifest XML du projet:

                          

Qu’est-ce que je regarde? Aucune suggestion?

MODIFIER

J’ai mis à jour le fichier manifest.xml avec toutes les autres activités et, d’une manière ou d’une autre, résolu le problème. L’activité intentionnelle démarre sans erreur. MAIS , c’est seulement sur AVD. Sur le périphérique réel, il génère toujours la même erreur. J’ai désinstallé l’application de l’appareil complètement et réinstallé, pourtant la même erreur.

L’exception est claire. Vous devez définir android:exported="true" exports android:exported="true" dans votre fichier AndroidManifest.xml où vous déclarez cette activité.

modifier

       

Ceci est seulement pour le studio Android

J’ai donc rencontré ce problème récemment. Le problème était dans la configuration de construction / exécution. Apparemment, Android Studio avait choisi une activité dans mon projet comme activité de lancement, faisant ainsi fi de mon choix dans le fichier manifeste.

Cliquez sur le nom du module juste à gauche du bouton Exécuter et cliquez sur “Modifier les configurations …”. Assurez-vous maintenant que l’option “Lancer l’activité par défaut” est sélectionnée.

La chose drôle quand j’ai eu cette erreur était que je pouvais encore lancer l’application avec l’appareil et que ça commence par 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é une erreur comme ci-dessous image:

entrer la description de l'image ici

Je venais de changer comme:

entrer la description de l'image ici

Que ça aide quelqu’un, merci 🙂

Ajouter Android: exporté = “true” dans votre balise d’activité “com.example.lib.MainActivity”.

De l’androïde: documentation exscope,

android: exporté Que l’activité soit lancée ou non par des composants d’autres applications – “true” si c’est possible, et “false” si ce n’est pas le cas. Si “false”, l’activité ne peut être lancée que par des composants de la même application ou des applications avec le même ID utilisateur.

À partir de votre sortie logcat, une incompatibilité dans uid est à l’origine du problème. Donc, l’ajout de l’androïde: exporté = “vrai” devrait faire l’affaire.

Semblable à la réponse d’Olayinka au sujet du fichier de configuration pour ADT: je viens d’avoir le même problème sur IdeaU v14 d’IntelliJ.

Je travaille à travers un tutoriel qui m’a fait changer l’activité de MyActivity de MyActivity à MyListActivity (qui est une liste de MyActivity ). J’ai commencé à obtenir des permissions de refus.

Après beaucoup d’essais, de labeur et de douleur: Dans .idea \ workspace.xml:

 ...    ...  ... 

J’ai changé MyActivity à MyListActivity , rechargé le projet et je suis de nouveau sur le sharepoint démarrer.

Vous ne savez pas quel IDE vous utilisez, mais peut-être que votre IDE a priorité sur une activité de démarrage spécifique?

Si vous essayez de tester votre application codée dans Android Studio via votre téléphone Android, c’est généralement le problème de votre téléphone. Il suffit de décocher toutes les options de débogage USB et de basculer les options du développeur sur OFF. Ensuite, redémarrez votre téléphone et activez le débogage du développeur et du port USB. Vous êtes prêt à partir!

Dans mon cas, cette erreur était due à des chemins d’access incorrects utilisés pour spécifier les intentions dans mon fichier XML de préférences après avoir renommé le projet. Par exemple, où j’avais:

      

J’avais besoin de ce qui suit à la place:

     

Corriger les noms de chemin a résolu le problème.

si nous faisons l’ activity particulière comme

 android:exported="true" 

ce sera l’ activity lancement. Cliquez sur le nom du module juste à gauche du button Exécuter et cliquez sur “Modifier les configurations …”. Assurez-vous maintenant que l’ "Launch default Activity" est sélectionnée.