Вызов внешнего приложения

Как я могу вызвать внешнее приложение из моего приложения?

Например: мне нужно вызвать Shazam (приложение) из моего приложения. Я вижу имя пакета приложения в файле logcat.

это будет полезно для каких-либо целей?


person Eby    schedule 25.01.2011    source источник


Ответы (3)


Вы можете вызвать активность стороннего приложения следующим образом.

final Intent shazamIntent = new Intent("com.shazam.android");                
shazamIntent .setComponent(new  ComponentName("com.shazam.android","com.shazam.android.Splash"));
startActivity(shazamIntent );

Но это не лучший способ сделать это. В случае изменения имени пакета (что очень маловероятно) или изменения имени активности (Splash может измениться на что-то другое) ваше приложение сломается. Если у Shazam есть намерение, которое можно вызвать, чтобы начать прослушивание песни, используйте его (не уверен, что оно у них есть).

Также сделайте необходимую проверку, если Shazam не установлен, чтобы ваш звонок не вылетал.

person Codevalley    schedule 25.01.2011

Создайте объект намерения запуска приложения и скажите startActivity.

person Gopinath    schedule 25.01.2011
comment
Вам не нужно добавлять внешний класс в файл манифеста. Если вы уверены, что приложение будет доступно и установлено, то просто создайте Intent с известным именем класса и запустите startActivity с намерением. Вот как домашнее приложение на Android отображает список всех установленных приложений и запускает их, когда вы нажимаете на ярлык приложения. - person Gopinath; 25.01.2011
comment
Класс shazam = Class.forName(com.shazam.android); Намерение намерение = новое намерение (shaz.this, shazam.getClass()); startActivity(намерение); это так? - person Eby; 25.01.2011

Специально для Shazam работает следующий код:

Intent intent = new Intent("com.shazam.android.intent.actions.START_TAGGING");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

if(!context.getPackageManager().queryIntentActivities(intent, 0).isEmpty()) {
    context.startActivity(intent);
} else {
    // Shazam is not installed
}

START_TAGGING — это намерение, которое выдается при касании виджета Shazam.

person amartynov    schedule 26.01.2015