2010-08-19 4 views
7

Я работаю над приложением, и я хочу интегрировать приложение Last.fm в него. В основном, когда кто-то смотрит на исполнителя в моем приложении, я хотел бы иметь кнопку, которую они могут нажать, чтобы открыть приложение Last.fm с информацией о художнике.Android: запуск активности для другого стороннего приложения

Это намерение работает, но он загружает меню спросит, какие приложения я хотел бы использовать (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? Here's экземпляр AndroidManifest.xml Last.fm для справки.

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

ответ

13

Да, это возможно, но вы должны знать правильное название компонента. Запустите приложение 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); 

в моем случае информацию я взял из LogCat был:

// Дат = содержание: //applications/applications/zausan.zdevicetest/zausan.zdevicetest.zdevicetest

// CMP = zausan.zdevicetest/.zdevicetest

для того, чтобы знать, как запустить приложение с правым компонентом/классом ... сделать то же самое для приложения last.fm

Edit: Я проверил, чтобы запустить Last.fm из моих собственное приложение, и это отлично работает без ошибок:

final Intent intentDeviceTest = new Intent("android.intent.action.MAIN");     
intentDeviceTest.setComponent(new ComponentName("fm.last.android","fm.last.android.LastFm")); 
startActivity(intentDeviceTest); 
+0

Это взломать и не считать надлежащим способом вызова приложений. Thiis верный способ убедиться, что все виды ошибок будут отображаться – Falmarri

+0

вы можете объяснить, почему это взломать? вы используете обычное намерение приложения, которое также было вызвано приложением запуска приложения, то есть когда вы нажимаете на значок приложения на главном экране? В любом случае, так что же лучше, чем вы предлагаете? –

+0

Возможно, я неправильно понял. Если вы вызываете активность, которую запускает программа запуска, то я думаю, это должно быть хорошо. Я понял этот вопрос как вызов внутриотраслевой деятельности другого пакета. Это склонно ломаться, потому что эта деятельность может потребовать дополнительных утилит, которые могут вызвать сбой, или что-то в этом роде. Не видя кода, невозможно сказать, безопасно ли оно на 100%. – Falmarri

Смежные вопросы