从另一个应用程序调用应用程序

时间:2011-01-12 21:45:04

标签: android android-intent phone-call

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

我用谷歌搜索了这个问题好几个小时,但我找不到任何有用的东西。主要是因为查找包名和类名的指南非常糟糕。

通过cmd和adb,我能够发现有关我要调用的应用程序的信息是: 包:/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);

有谁知道该写什么?

P.S。:我自己的应用程序不需要任何关于被叫应用程序中发生的事情的信息。

2 个答案:

答案 0 :(得分:36)

使用PackageManager获取包的Intent:

PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("com.example.package");
startActivity(intent);

答案 1 :(得分:1)

文档是 here

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

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