【问题标题】:Calling an app from another app从另一个应用程序调用一个应用程序
【发布时间】:2011-01-12 21:45:03
【问题描述】:

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

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

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

【问题讨论】:

  • 你不明白什么? i.setClassName("",""); ?
  • 我不知道在每个参数中放什么。或者它甚至会以这种方式工作。

标签: android android-intent phone-call


【解决方案1】:

使用 PackageManager 获取包的 Intent:

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

【讨论】:

  • 我正在使用 PackageManager 方法,但应用程序在尝试运行某些特定应用程序时崩溃,例如 - 日历。这是我的 logcat 中的行,知道吗? 04-22 23:08:49.390: E/AndroidRuntime(16772): java.lang.NullPointerException 04-22 23:08:49.390: E/AndroidRuntime(16772): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379)
  • @Khobaib 听起来您的 Intent 为空(这就是 NullPointerException 的含义)。也许仔细检查包名称
【解决方案2】:

文档是 here.

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

如果你没有代码,你可以通过this查看如何从apk中找出类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多