【问题标题】:Android call method from another app without starting it从另一个应用程序调用Android方法而不启动它
【发布时间】:2013-10-09 19:07:58
【问题描述】:

我有两个带有不同包App1App2 的android 应用程序。假设我想从App2 调用一个用App1 编写的方法Method1。我在以下链接中找到的一个解决方案Android call method from another app 建议我们应该在App1 中注册一个BroadcastReceiver 并从App2 调用sendBroadcast()。但问题是,只有当 App1 在后台运行时,我才能调用 Method1。否则,什么都不会发生。

如何解决这个问题?有没有其他方法可以调用Method1 而不必启动App1

【问题讨论】:

  • 使用服务加辅助

标签: android android-intent


【解决方案1】:

但问题是,只有当 App1 在后台运行时,我才能调用 Method1。

这是不正确的,如果您在AndroidManifest.xml中注册任何组件(BroadcastReceiverServiceActivity等)并导出,其他应用程序可以使用Intent触发它,而不管申请进程的当前状态。

也许您遇到的问题是您链接到的示例在 Java 代码中注册了 BroadcastReceiver。如果您改为在清单中发布 <receiver>,它将始终可以从外部访问。这在SDK Documentation 中对BroadcastReceiver 进行了解释。

【讨论】:

  • 我们可以在不创建活动实例的情况下调用另一个活动中定义的方法吗?因为我已经在单独的类文件中编写了广播接收器,并且当我无法触发Activity类中编写的方法时。
  • 如果您要启动Activity,则直接从您的App2 启动Activity,而不是BroadcastReceiver...直接访问源代码。使用正确的 Intent 而不是 sendBroadcast() 调用 startActivity()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
相关资源
最近更新 更多