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

时间:2019-01-14 10:33:27

标签: java android android-studio android-intent

我有2个应用程序及其源代码。当我在应用程序1中按下按钮时,我需要在应用程序2中后台“按下”按钮(从中开始特定的操作,而不是MainActivity)。因此,例如,执行类似

的命令
send "press_button2" -> APP2

最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

这是一个相当普遍的问题,但是您必须使用“ APP1”中的隐式意图,并在“ APP2”中读取意图动作。 步骤将是:

  1. 在APP1中定义隐式意图,例如
val sendIntent: Intent = Intent().apply {
    action = Intent.ACTION_SEND
    putExtra(Intent.EXTRA_TEXT, "press_button2")
    type = "text/plain"
}
startActivity(sendIntent)
  1. 在APP2中,使用意图过滤器将清单设置为在您选择的活动中接收指定的动作:
<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>
  1. 在“ APP2”中处理活动中的传入意图,例如:
@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