Estoy trabajando en una aplicación y quiero integrar la aplicación Last.fm en ella. Básicamente, cuando alguien mira a un artista en mi aplicación, me gustaría tener un botón que puedan tocar para abrir la aplicación Last.fm con la información del artista.
Esta intención funciona, pero carga un menú que pregunta qué aplicación me gustaría usar (navegador o Last.fm):
Intent i = new Intent();
i.setData(Uri.parse("http://last.fm/music/" + headliner));
i.setAction("android.intent.action.VIEW");
startActivity(i);
Sin embargo, solo quiero iniciar la aplicación Last.fm y omitir el cuadro de diálogo que pregunta qué aplicación usar, pensé que tal vez usar el método setPackage() funcionaría así:
i.setPackage("fm.last.android");
Pero hace que la aplicación se bloquee:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=http://last.fm/music/Rihanna pkg=fm.last.android }
¿Es posible simplemente iniciar la aplicación Last.fm? Aquí está una copia de AndroidManifest.xml de Last.fm como referencia.
Gracias por leer, Tony
Sí, es posible, pero necesita saber el nombre correcto del componente. Inicie la aplicación last.fm regularmente y verifique el archivo de registro para la información cmp=… que se usó cuando se inició la aplicación. Use esto también en su aplicación entonces.
Inicio la aplicación Z-DeviceTest desde el mercado desde mi aplicación sin un problema como este:
final Intent intentDeviceTest = new Intent("android.intent.action.MAIN");
intentDeviceTest.setComponent(new ComponentName("zausan.zdevicetest","zausan.zdevicetest.zdevicetest"));
startActivity(intentDeviceTest);
en mi caso, la información que tomé del logcat fue:
// dat=contenido://aplicaciones/aplicaciones/zausan.zdevicetest/zausan.zdevicetest.zdevicetest
// cmp=zausan.zdevicetest/.zdevicetest
para saber cómo iniciar la aplicación con el componente/clase correcto… haga lo mismo con la aplicación last.fm
Editar:
Probé para iniciar Last.fm desde mi propia aplicación, y esto funciona bien sin ningún error:
final Intent intentDeviceTest = new Intent("android.intent.action.MAIN");
intentDeviceTest.setComponent(new ComponentName("fm.last.android","fm.last.android.LastFm"));
startActivity(intentDeviceTest);
.