2009-12-29 8 views
1

J'ai actuellement widget pour mon application HireADroid livré avec l'application principale. Je voudrais dégrouper le widget et le libérer comme une offre distincte. Cependant - le widget s'appuie sur Activities de l'application principale, donc j'ai besoin de naviguer entre ces deux appelant principalement Activity de l'application principale du widget. Donc, l'idée de base - application peut fonctionner sans widget et le widget devient l'option "add-on".Android - Appel Activité du widget

Quelle est la «bonne» façon d'appeler les activités de l'application à partir du widget autonome? Est-ce que je convertis l'application principale en un fournisseur de contenu? Pouvez-vous me montrer des exemples de code?

Bonne année!

P.S. Je ne demande pas comment appeler Activités du widget qui est fourni dans le même fichier APK. La question précise que widget est distribué séparément de l'application qu'il appelle

+0

Gardez à l'esprit que vos utilisateurs peuvent être malheureux quand ils téléchargent le "add-on" widget et ne trouve rien nouveau a été ajouté à leur lanceur. À tort ou à raison, les utilisateurs s'attendent à trouver quelque chose de nouveau lorsqu'ils installent une nouvelle application. Personnellement, je les garderais dans un seul APK. – CommonsWare

+0

Hmmm ... Widget fournit de nouvelles fonctionnalités: widget et notifications. Le problème - je vois très peu d'utilisation de widget dans mon application et ma théorie est que les utilisateurs ne sont tout simplement pas au courant. Comment puis-je mieux faire de la publicité si ce n'est pas une offre distincte? – Bostone

Répondre

0

L'idée de base est d'utiliser Intentions:

  1. Dans le manifeste, ont votre activité répond à certaines actions en utilisant un <intent-filter>.
  2. Dans votre code de widget, créez une instance de la classe android.content.Intent pour l'action à laquelle vous avez défini votre activité et appelez le startActivity sur l'instance Intent.

Si l'activité est contextuelle, vous pouvez utiliser URIs contenu (vous pouvez créer Intentions d'action/paires URI) et passer également des informations supplémentaires via un bundle 'extras (voir Intent.getExtras).

Plus d'informations disponibles dans les docs ici:

+0

C'est la première chose que j'ai faite: créer un filtre d'intention d'URI de contenu dans le manifeste de l'application principale. Cependant quand j'essaye d'appeler cette intention du code de mon widget j'obtiens 'android.content.ActivityNotFoundException: Aucune activité trouvée pour manipuler l'intention {act = myapp: // widget/recherche}' Mon filtre d'intention sur l'activité est défini comme et je l'appelle comme 'new Intent (" myapp: // widget/results ")' – Bostone

+0

Je suppose que vous ne pouvez pas le faire dans 2 applications distinctes communiquant les uns avec les autres – Bostone

+0

Je pense que vous pouvez être des actions déroutantes (ie your.package.ACTION) et des URI (ie content: //your.package/content/path). Le premier argument du constructeur 'Intent' doit être une action (c'est-à-dire' ACTION_VIEW') et le second argument * optional * peut être un URI. –