Android : activité d'Appel d'une autre application
J'ai deux applications Android,suppose qu'ils sont "A" et "B", "a" a cinq activités et je tiens à appeler son activité spécifique de l'événement clic du bouton "B".
J'ai testé cette façon de l'appeler une application à partir d'un autre:
Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.testapp.ws");
startActivity(LaunchIntent);
"com.testapp.ws" est le nom du package de "Un".
Cela va de "A" à partir de sa première activité de nouveau pas de l'activité spécifique.
Comment puis-je appeler Une activité déterminée?
OriginalL'auteur Grant | 2012-06-09
Vous devez vous connecter pour publier un commentaire.
Subvention,
La question ici est clairement une mauvaise compréhension de l'Application Android de Modèle. Commonsware est tout à fait correcte sur la façon de résoudre ce problème. Cependant, sans la compréhension de Android fondamentaux, je peux voir pourquoi vous avez de la difficulté de l'appliquer. Donc, une explication rapide:
Chaque action dans Android commence avec une Intention. Cela est particulièrement vrai pour les Activités. Chaque Activité a un but. Afin de rendre l'interface facile pour les développeurs, vous pouvez répondre à une Intention de l'OS, OU vous pouvez créer une Intention de la part des Activités de la classe à utiliser. En général, il est préférable de faire la première option.
De répondre à une Intention
Lors de la sélection d'une Intention de répondre, vous pouvez littéralement répondre à toute Intention. Il s'agit d'une Action. Si j'ai créé une Intention qui s'appelle "TOTO", le Bar de l'Activité pourrait la prendre et d'y répondre. Nous avons des conventions, cependant, et la principale de celles-ci est à ajouter votre nom de paquet pour tout l'Intention de vous rendre. Par exemple "com.de l'entreprise.package.FOO". Simplement, c'est afin de nous éviter les collisions avec d'autres applications.
Chaque Activité peut répondre à différents événements. Ceci est défini dans le AndroidManifest.xml.
Ci-dessus, nous avons également de définir la catégorie à DÉFAUT, de sorte que si l'utilisateur le change, nous serons la seule application qui répond à notre Intention. Le chemin que nous appelons alors le but est d'utiliser le MÊME NOM que nous avons créé (c'est à dire "com.de l'entreprise.package.FOO")
Comment ça marche! Il vous suffit de changer la ci-dessus com.de l'entreprise.package.FOO" pour votre nom de paquet (défini par votre application) et quelque chose de significatif. Un exemple est "com.testapp.ws.SWAT_FLIES".
Pourquoi ton code ne fonctionne pas
Le code ressemble pour un TYPE spécifique de l'Intention à l'action. Rappelez-vous quand vous avez fait la AndroidManifest et la première Activité, vous mettez:
Bien... getLaunchIntentForPackage() n'a que l'Intention première de l'Activité. C'est POURQUOI nous faire un personnalisé Intention... d'Abord, parce que nous ne voulons pas qu'il est de notre 3ème de l'Activité de notre start up... Et deuxièmement, parce que l'OS nous dira que le démarrage de l'Activité. Nous avons à le dire avec notre PROPRE action ("com.testapp.ws.SWAT_FLIES")
Espère que cette aide,
FuzzicalLogic
comment cela peut être réalisé que si je veux envoyer les données à partir d'une activité dans une application à un service dans une autre application.???
En fait, vous avez juste besoin de l'Intention à l'ACTION, et envoyer les données via setExtra avant de vous le feu de la startService(). Vous pourriez avoir à construire l'Intention première (c'est à dire l'Intention myIntent = new Intent("com.de l'entreprise.app.L'ACTION")
Est-il possible de faire appel à l'activité au sein d'un tabHost... je l'ai essayé comme "firstTabSpec.setIndicator("Deuxième Nom de l'Onglet").setContent(new Intent("com.de l'entreprise.package.TOTO"));" mais j'obtiens un "java.lang.SecurityException: demande de code de com.de l'entreprise.formule (uid 10036) pour être exécutés dans le processus com.exemple.test (avec l'uid 10037)"
Oui, c'est possible, mais cela dépend de plusieurs choses. Le plus important est ce que vous entendez par l'appelant dans un Onglet. Voulez-vous dire que vous souhaitez l'Onglet à utiliser l'Activité de son point de Vue ou voulez-vous dire quand vous "cliquez" sur un élément, il va ouvrir l'Activité nommée.
OriginalL'auteur Fuzzical Logic
Étape #1: Ajout d'une
<intent-filter>
à la troisième activité avec une action personnalisée:Étape #2: Démarrage de l'activité en utilisant le
Intent
:Quel est le
category
, est-il nécessaire ici?Ah, oui, vous aurez besoin d'un
<category>
élément pour leDEFAULT
catégorie que<intent-filter>
-- mes excuses.Vous pouvez littéralement utiliser le code que j'ai énumérés ici. Si vous souhaitez changer
SOMETHING_USEFUL
être quelque chose de plus utile, juste le faire dans les deux endroits.ajouter le
</intent-filter>
de l'activité dans le AndroidManifest.xml fichier.OriginalL'auteur CommonsWare
Il ya des cas où vous ne pouvez pas utiliser deux applications en particulier, vous vous avez des capacités d'édition ou vous ne voulez pas faire de la coutume intentions, donc dans ce cas il existe une alternative (avec une meilleure vérification des erreurs pour la disponibilité):
Quelque part dans la classe principale ou dans une sous-classe qui gère les méthodes générales:
OriginalL'auteur Abandoned Cart