Pregunta

Tengo un widget que supone que llamar a una actividad de la aplicación principal cuando el usuario hace clic en el cuerpo del widget. Mis disposición trabaja para una sola instancia Reproductor pero para una segunda instancia de la misma el widget PendingIntent consigue reutilizados y como resultado de la información vital que estoy enviando como se sobreescribe adicional para la primera instancia. Así que pensé que debería pasar widget de Identificación como datos Intent Sin embargo, tan pronto como agrego Intent#setData me gustaría ver en el registro que 2 Intentos separados se dispararon apropiadamente pero la actividad falla a recogerlo, así que básicamente la actividad no se van a plantear y no pasa nada (sin error o advertencia éter) Así es como la actividad se configura en el Manifiesto:

    <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>

Y el código de aquí que está configurado para manejar el 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));

La aplicación principal y el widget se empaquetan como 2 APK separado cada uno en su propio paquete y manifiesto

¿Fue útil?

Solución

creo que necesita una etiqueta <data> en su <intent-filter> a fin de que la intención que está disparando para que coincida con la intención de filtro que se haya registrado.

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

También usando Uri.EMPTY puede ser un problema. Me gustaría crear su propio esquema de Uri, de modo que su setData () llamada se ve algo como:

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

y su intención filtro se vería así:

    <intent-filter>
        <action android:name="bostone.android.search.RESULTS" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="droidln"/>
    </intent-filter>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top