Je travaille sur une application qui a 2 saveurs, gratuite et professionnelle. Le libre semble fonctionner très bien mais lorsque je tente de passer des paramètres d'activité de préférence aux noms d'activité Il apparaît cette erreur:Erreur: java.lang.SecurityException: Permission Denial: début Intention avec une autre saveur
-12 00:41:49.473 18533-18533/com.albertoha94.apps.DuelHelperReloaded.Pro E/AndroidRuntime? FATAL EXCEPTION: main
Process: com.albertoha94.apps.DuelHelperReloaded.Pro, PID: 18533
java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.VIEW cmp=com.albertoha94.apps.DuelHelperReloaded/.NameList } from ProcessRecord{9f48ed8 18533:com.albertoha94.apps.DuelHelperReloaded.Pro/u0a59} (pid=18533, uid=10059) not exported from uid 10060
at android.os.Parcel.readException(Parcel.java:1599)
at android.os.Parcel.readException(Parcel.java:1552)
at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2611)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1502)
at android.app.Activity.startActivityForResult(Activity.java:3825)
at android.app.Activity.startActivityForResult(Activity.java:3785)
at android.app.Activity.startActivity(Activity.java:4100)
at android.app.Activity.startActivity(Activity.java:4068)
at android.preference.Preference.performClick(Preference.java:1012)
at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:214)
at android.widget.AdapterView.performItemClick(AdapterView.java:309)
at android.widget.AbsListView.performItemClick(AbsListView.java:1156)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3071)
at android.widget.AbsListView$3.run(AbsListView.java:3899)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5401)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:725)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:615)
La structure de mon module est quelque chose comme ceci:
src
-debug
-java->package->Namelist
-main
-java->package->SettingsDuel
NameListStructure(A class that extends arrayAdapter, i use it to show the list in a format i want)
-pro
-layout->mainscreen(used in Dhmain)
-prodebug
-java->...DHMain
-prorelease
-java->...DHMain
-release
-java->...NameList
N'a pas montré la structure de la version gratuite car je ne pense pas que c'est nécessaire, son fonctionnement bien. NameList est à la fois dans le débogage en version, ils ont tous les deux des modifications mineures et j'ai créé ce répertoire, donc je n'ai pas besoin d'en avoir une copie dans les répertoires libres/pro. DHMain change en fonction de son free/pro et du débogage/de la version.
SettingsDuel est en mode principal uniquement et ne change jamais.
-je accéder au NameList d'activité par SettingsDuel cette façon:
<Preference
android:enabled="true"
android:title="@string/Names">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.albertoha94.apps.DuelHelperReloaded"
android:targetClass="com.albertoha94.apps.DuelHelperReloaded.NameList"/>
</Preference>
Ceci est dans un fichier xml dans le répertoire principal, il ne change jamais. C'est aussi le seul moyen d'accéder à l'activité NameList.
Et enfin, les changements AppID selon le goût de l'application (je pense que cela pourrait être la cause du problème, car la version gratuite ne marche pas changer son identifiant et il fonctionne très bien):
gratuit:
applicationId 'com.albertoha94.apps.DuelHelperReloaded'
pro:
applicationId 'com.albertoha94.apps.DuelHelperReloaded.Pro'
J'ai essayé ce qui suit:
-Ajouter android: exporté = "true" dans la classe SettingsDuel.
-Ajouter android: exporté = "true" dans la classe NameList.
-Ajouter android: exported = "true" dans la classe Les deux classes.
-Ajouter la NameList classe aux packages pro (et de prodebug proRelease)
-Nettoyage du projet.
-Projet Reebuild.
À ce stade, je ne sais pas quoi d'autre à essayer.
EDIT:
Après avoir fait ce que Minhtdh dit dans sa réponse, il a travaillé en quelque sorte. L'activité NameList ne fonctionne que si j'ai la version gratuite installée.
Si je tente d'accéder NameList d'activité avec la version pro seulement elle montre cette erreur:
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.albertoha94.apps.DuelHelperReloaded/com.albertoha94.apps.DuelHelperReloaded.NameList}; have you declared this activity in your AndroidManifest.xml?
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1782)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1507)
at android.app.Activity.startActivityForResult(Activity.java:3825)
at android.app.Activity.startActivityForResult(Activity.java:3785)
at android.app.Activity.startActivity(Activity.java:4100)
at android.app.Activity.startActivity(Activity.java:4068)
at android.preference.Preference.performClick(Preference.java:1012)
at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:214)
at android.widget.AdapterView.performItemClick(AdapterView.java:309)
at android.widget.AbsListView.performItemClick(AbsListView.java:1156)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3071)
at android.widget.AbsListView$3.run(AbsListView.java:3899)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5401)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:725)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:615)
Il dit qu'il ne peut pas trouver le NameList d'activité, même si bien que je l'ai dans le manifeste (le manifeste est en le répertoire principal):
<activity
android:name=".NameList"
android:label="@string/Names"
android:exported="true">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.albertoha94.apps.DuelHelperReloaded.SettingsDuel" />
</activity>
Oui, je reconstruisait la version pro. Cela semble fonctionner jusqu'à présent! : D Pouvez-vous m'expliquer ce qui s'est passé exactement? Pourquoi l'application a-t-elle soudainement "la permission" et ai-je besoin des deux applications sur le téléphone pour fonctionner? –
Vérifiez mon édition pls. –
@BetunHerreraAlanis, j'ai mis à jour la réponse, s'il vous plaît vérifier si cela peut aider. – Minhtdh