如何在两个安卓应用程序之间创建交互

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

【讨论】:

这是一个相当模糊的答案。可能更适合作为评论 非常感谢!最好的!

以上是关于如何在两个安卓应用程序之间创建交互的主要内容,如果未能解决你的问题,请参考以下文章

两个安卓设备之间的屏幕共享

如何使用cordova-plugin-file在cordova应用程序之间共享数据? (安卓、IOS)

NSD文件共享安卓

使用蓝牙获取两个安卓设备之间的距离

uniapp 和安卓 ios 之间的交互

怎么把ios 适配安卓 标注和 切图