如何在两个安卓应用程序之间创建交互
Posted
技术标签:
【中文标题】如何在两个安卓应用程序之间创建交互【英文标题】:How to create interaction between two android applications 【发布时间】:2019-06-08 08:06:03 【问题描述】:我有 2 个应用程序及其源代码。当我在应用程序一中按下按钮时,我需要在应用程序 2 中使用背景“按下”按钮(从它开始特定操作,而不是 MainActivity)。因此,例如,执行类似的命令
send "press_button2" -> APP2
最好的方法是什么?
【问题讨论】:
尝试事件驱动并让两个应用程序监听总线上的事件 最好的方法可能是找到另一种方法来实现您想要实现的任何目标。 @Stultuske 你的意思是使用 greenrobot 的 eventBus 库吗? @NicolaGallazzi 我不熟悉那个库。但事件驱动需要服务侦听的事件总线来过滤适用于它们的事件 @Stultuske 事件驱动中的事件总线可以在两个不同的应用程序之间共享吗?在 EventBus 库中这是不可能的 【参考方案1】:这是一个相当笼统的问题,但您必须使用“APP1”中的隐式意图并阅读“APP2”中的意图操作。 步骤将是:
-
在您的 APP1 中定义隐式意图,类似于
val sendIntent: Intent = Intent().apply
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_TEXT, "press_button2")
type = "text/plain"
startActivity(sendIntent)
-
在您的 APP2 中,使用 Intent 过滤器设置您的清单以接收您选择的活动中的指定操作:
<activity android:name="ClickActivity">
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain"/>
</intent-filter>
</activity>
-
在“APP2”中处理 Activity 中的传入意图,例如:
@SuppressLint("MissingSuperCall")
override fun onCreate(savedInstanceState: Bundle?)
when
intent?.action == Intent.ACTION_SEND ->
if ("text/plain" == intent.type)
intent.getStringExtra(Intent.EXTRA_TEXT)?.let
// Update UI to reflect text being shared
if (it == "press_button2")
myButton.performClick()
请注意,其他应用也可以管理您的“发送文本操作”,因此 android 将向用户显示应用选择器,您将无法在两个应用之间无缝切换。
参考here
【讨论】:
这是一个相当模糊的答案。可能更适合作为评论 非常感谢!最好的!以上是关于如何在两个安卓应用程序之间创建交互的主要内容,如果未能解决你的问题,请参考以下文章