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 () будет работать следующим образом:

 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 для справки.

Спасибо за чтение, Тони

Да, это возможно, но вам нужно знать правильное имя компонента. Запустите приложение 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); 
  • Google In-App billing, IllegalArgumentException: намерение службы должно быть явным, после перехода на Android L Dev Preview
  • Как вызвать калькулятор Android в моем приложении для всех телефонов
  • Intent не устанавливает параметры камеры
  • Что такое START_STICKY, START_NOT_STICKY и START_REDELIVER_INTENT Сервис
  • Как делать снимки с камеры без предварительного просмотра, когда начнется мое приложение?
  • LinkedList, помещенный в Intent extra, перерабатывается в ArrayList при получении в следующем действии
  • как мы можем использовать startActivityforResult () для намерения электронной почты?
  • Что такое липкая трансляция?
  • Пользовательская фильтрация выбора намерений на основе установленного имени пакета Android
  • Intent putExtra ArrayList
  • Как передать URI на намерение?
  • Давайте будем гением компьютера.