Question

J'ai un widget qui devait appeler une activité de l'application principale lorsque l'utilisateur clique sur le corps widgets. Mes travaux d'installation pour une seule instance widget, mais pour une deuxième instance du même widget de la PendingIntent obtient réutilisés et comme conséquence, les informations essentielles que je vous envoie comme supplémentaire est écrasé pour la 1 ère instance. Donc, je pensais que je passerais ID widget comme données Intent Cependant, dès que j'ajoute Intent#setData je voyais dans le journal que 2 Intentions séparés sont correctement tiré, mais l'activité échoue pour le ramasser si fondamentalement l'activité ne viendra pas et rien ne se passe (pas d'erreur ou d'avertissement éther) Voici comment l'activité est configuré dans le manifeste:

    <activity android:name=".SearchResultsView" 
         android:label="@string/search_results"
        <intent-filter>
            <action android:name="bostone.android.search.RESULTS" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

Et le code ici qui est configuré pour la manipulation du clic

Intent di = new Intent("bostone.android.search.RESULTS");
di.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// if line below is commented out - the Activity will start
di.setData(ContentUris.withAppendedId(Uri.EMPTY, widgetId));
di.putExtra("URL", url);
views.setOnClickPendingIntent(R.id.widgetContent, 
    PendingIntent.getActivity(this, 0, di, 0));

L'application principale et le widget sont emballés comme deux APK séparé chacun dans son propre paquet et manifeste

Était-ce utile?

La solution

Je pense que vous avez besoin d'une étiquette <data> dans votre <intent-filter> afin que l'intention que vous tiriez pour correspondre au filtre que vous avez l'intention enregistré.

https://developer.android.com/guide/topics /manifest/data-element.html

En utilisant aussi Uri.EMPTY peut être un problème. Je crée votre propre système d'Uri, de sorte que votre apparence d'appel quelque chose comme de setData ():

di.setData(Uri.withAppendedPath(Uri.parse("droidln://widget/id/"), String.valueOf(appWidgetId)));

et votre filtre intention ressemblerait à ceci:

    <intent-filter>
        <action android:name="bostone.android.search.RESULTS" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="droidln"/>
    </intent-filter>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top