我有两个自己的应用程序,即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。
有什么想法吗?
谢谢。
答案 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启动App1ActivityIntent 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");
}