如何在两个自己的应用程序之间发送字符串?

时间:2019-05-20 07:40:43

标签: android

我有两个自己的应用程序,即App A和AppB。 一个应用程序A的活动,通过传递一个字符串打开应用程序2。

代码App1:

Intent launchIntent = getMainActivity().getPackageManager().getLaunchIntentForPackage("com.example.app2");
if (launchIntent != null)
{
  launchIntent.setAction(Intent.ACTION_SEND);
  launchIntent.putExtra("stringApp1ToApp2", "myString");
  launchIntent.setType("text/plain");
  startActivity(launchIntent);
}

代码App2:

Bundle parameters = this.getIntent().getExtras();
if(parameters != null)
{
  String b = parameters.getString("stringApp1ToApp2", "stringDefault");
}

正常工作。

我的问题是当我想将字符串从App2发送到App1时。 在应用程序2中,有一个按钮,当您单击时必须关闭应用程序(完成())并将字符串发送到应用程序1。但是不要从头开始打开App1。

有什么想法吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

我认为您需要在应用1的mainactivity中重写OnNewIntent方法,因为这是一个新的意图,而不是一个startintent

答案 1 :(得分:0)

您可以通过使用意图过滤器来实现。如下所示在清单中定义app1的活动。

   <activity
        android:name=".App1Activity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data
                android:host="send_data"
                android:scheme="app1" />
        </intent-filter>
    </activity>

您可以使用

从app2启动App1Activity
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("app1://send_data?string_App2_To_App1=myString"));
            try {
                startActivity(intent);
            } catch (e: Exception) {
                Util.showToast(this, "Activity not found");
            }

现在您可以通过使用Activity App1Activity的onCreate / onNewIntent()中的代码来获取由app2发送到app1的数据

    Intent intent = getIntent();
    Uri data = intent.getData();
    if (data != null) {
        String stringFromApp2 = data.getQueryParameter("string_App2_To_App1");
    }