20

在我正在开发的这个应用程序中,我需要加载/调用另一个已经安装在手机上的应用程序。这是一个仅供我个人使用的应用程序,因此无需检查是否安装了其他应用程序 - 我知道它是。

我已经用谷歌搜索了这个问题几个小时,但我找不到任何可行的方法。主要是因为查找包名和类名的指南非常糟糕。

通过 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:我自己的应用程序不需要任何有关被调用应用程序中发生的事情的信息。

4

2 回答 2

36

使用 PackageManager 获取包的 Intent:

PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("com.example.package");
startActivity(intent);
于 2011-01-13T05:21:39.430 回答
1

文档在 这里

我认为在您的示例中, com.soundcloud.android 实际上是包名称,因此应该是第一个参数。对于第二个,您仍然需要弄清楚要使用的类。

如果您没有代码,您可以使用this查看如何从 apk 中找出类。

于 2011-01-12T22:35:17.997 回答