Android: запуск активности для другого стороннего приложения
Я работаю над приложением, и я хочу интегрировать в него приложение Last.fm. В основном, когда кто-то смотрит на исполнителя в моем приложении, я хотел бы иметь кнопку, которую они могут нажать, чтобы открыть приложение Last.fm с информацией о художнике.
Это намерение работает, но оно загружает меню, в котором запрашивается приложение, которое я хотел бы использовать (Browser или Last.fm):
Intent i = new Intent(); i.setData(Uri.parse("http://last.fm/music/" + headliner)); i.setAction("android.intent.action.VIEW"); startActivity(i);
Тем не менее, я просто хочу запустить приложение Last.fm и пропустить диалог, спрашивающий, какое приложение использовать, я думал, возможно, использование метода setPackage () будет работать следующим образом:
- Как сделать упор на несколько действий
- Что такое намерение в Android?
- Перечисление всех дополнительных компонентов
- Перенос данных с одного действия на другое с использованием намерений
- как я могу отправить данные из onPostExecute в AsyncTask?
i.setPackage("fm.last.android");
Но это приводит к сбою приложения:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=http://last.fm/music/Rihanna pkg=fm.last.android }
Можно ли просто запустить приложение Last.fm? Вот ссылка на AndroidManifest.xml Last.fm для справки.
Спасибо за чтение, Тони
- Не удалось запустить служебный
- Как использовать putExtra () и getExtra () для строковых данных
- Android - Как перехватить намерение «Установить приложение»
- Как проверить, может ли какое-либо намерение быть обработано из какой-либо деятельности?
- Как узнать, какое намерение выбрано в Intent.ACTION_SEND?
- Учет целей
- Приложение Gmail 5.0 не работает с «Разрешением, запрещенным для вложения», когда оно получает намерение ACTION_SEND
- Отправка намерения в браузер для открытия определенного URL
Да, это возможно, но вам нужно знать правильное имя компонента. Запустите приложение last.fm регулярно и проверьте файл журнала для информации cmp = …, которая была использована при запуске приложения. Используйте это также в своем приложении.
Я запускаю приложение Z-DeviceTest с рынка из моего приложения без такой проблемы:
final Intent intentDeviceTest = new Intent("android.intent.action.MAIN"); intentDeviceTest.setComponent(new ComponentName("zausan.zdevicetest","zausan.zdevicetest.zdevicetest")); startActivity(intentDeviceTest);
в моем случае информация, которую я взял с логарифма, была:
// dat = content: //applications/applications/zausan.zdevicetest/zausan.zdevicetest.zdevicetest
// cmp = zausan.zdevicetest / .zdevicetest
чтобы узнать, как запустить приложение с нужным компонентом / classом … сделайте то же самое для приложения last.fm
Изменить: я тестировал запуск Last.fm из собственного приложения, и это отлично работает без ошибок:
final Intent intentDeviceTest = new Intent("android.intent.action.MAIN"); intentDeviceTest.setComponent(new ComponentName("fm.last.android","fm.last.android.LastFm")); startActivity(intentDeviceTest);