【问题标题】:Is it possible to start an activity in a different apk using startActivity on Android using the activity name or similar?是否可以使用活动名称或类似名称在 Android 上使用 startActivity 在不同的 apk 中启动活动?
【发布时间】:2010-04-20 14:22:07
【问题描述】:

我尝试编写一个带有应从其他应用程序启动的活动的 Android 应用程序。它不是内容提供者,只是一个带有 GUI 的应用程序,不应在已安装的应用程序中列出。我已经尝试了代码示例here,启动现有提供程序等似乎很容易,但我无法弄清楚如何编写一个“隐藏”应用程序并从另一个应用程序启动它。

基本用例是:

  • App A 是可从应用程序列表启动的普通 apk。
  • App B 是一个不同的 apk,具有已知的包和活动名称,但在应用程序列表中不可见或无法启动。
  • 应用 A 使用包名和类名(或者可能是根据这些名称构造的 URI?)启动应用 B。

我在第三步失败了。可以这样做吗?

【问题讨论】:

  • 我认为这是可能的;如果您查看有关应用程序发布的“签名策略”页面 (developer.android.com/guide/publishing/…),第二个要点似乎是在谈论您的目标。我自己没有做过,所以不能提供更多信息。
  • 是的,大量应用程序已经证明了这一点,例如 CarDar 从 CarDar 应用程序中启动 Radar,或者您可以从自己的应用程序中启动 Barcode Scanner

标签: java android android-activity android-intent


【解决方案1】:

是的。

使用包名和类名,如下所示(用于启动 Gmail):

new Intent("com.google.android.gm", "com.google.android.gm.ConversationListActivity");

【讨论】:

  • 是的,就是这样。我之前尝试了 setClassName(String packageName, String className) 方法,但错过了类名需要有完整路径,所以我认为我误解了它的使用。谢谢。
【解决方案2】:

为什么要使用“包名和类名”来启动第二个.apk中的Activity?

为什么不使用Intent,因为这是启动Activity 的标准方式?

【讨论】:

  • 他说的是使用 Intent,只是不使用 new Intent(context, Class>) 构造函数。
  • 如果你这样做,你需要一个意图过滤器,是吗?
【解决方案3】:

在同一行中,如果我有一个通常启动活动的应用程序,我是否可以通过使用私钥对其进行签名来将其构建到 apk 中。这是否允许从其他开发人员构建的其他 apk 访问该活动?

【讨论】:

    猜你喜欢
    • 2012-03-11
    • 1970-01-01
    • 2016-02-24
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    相关资源
    最近更新 更多