Вызов приложения из другого приложения - PullRequest
19 голосов
/ 13 января 2011

В этом приложении, которое я разрабатываю, мне нужно загрузить / вызвать другое приложение, которое уже установлено на телефоне.Это приложение только для моего личного использования, поэтому не нужно проверять, установлено ли другое приложение - я знаю, что оно есть.

Я несколько часов гуглял эту проблему, но не могу найти ничего, чтоработает.Главным образом потому, что рекомендации по поиску имени пакета и имени класса действительно плохие.

С помощью cmd и adb мне удалось обнаружить, что информация о приложении, которое я хотел бы вызвать, была: package: / data / app/com.soundcloud.android-1.apk=com.soundcloud.android (это именно то, что сказано в окне cmd.)

Я попробовал что-то вроде этого:

Intent i = new Intent();
i.setClassName("/data/app/com.soundcloud.android-1.apk", "com.soundcloud.android");
startActivity(i);

Номое приложение просто вылетает вместо этого.Я использовал приведенный выше код, потому что кто-то сказал, что это может вызвать приложение:

Intent i = new Intent();
i.setClassName("<package_name>","<Class Name(with package name)>");
startActivity(i);

Кто-нибудь знает, что на самом деле писать?

PS: моему собственному приложению не нужна информация о том, чтопроисходит в вызываемом приложении.

Ответы [ 2 ]

36 голосов
/ 13 января 2011

Используйте PackageManager, чтобы получить намерение для пакета:

PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("com.example.package");
startActivity(intent);
1 голос
/ 13 января 2011

Документация здесь .

Я думаю, что в вашем примере com.soundcloud.android на самом деле является именем пакета, так что это должен быть первый аргумент.Для второго вам все еще нужно выяснить, какой класс использовать.

Если у вас нет кода, вы можете проверить, как найти класс из apk с помощью this .

...