Android中的应用程序间通信:如何结束应用程序(应用程序B)并将数据返回给调用者应用程序(应用程序A)

问题描述 投票:1回答:1

我有两个申请。 App AApp B

App A是主要的应用程序。 App A可以打开App B。另一方面,App B是一个包含3个活动的独立应用程序。

AppB.FirstActivity =让用户从列表中选择项目 AppB.SecondActivity =根据所选项目执行处理 AppB.ThirdActivity =这是用户可以接受结果或重试处理的地方

App A希望收到基于AppB.ThirdActivity输出的信息。

我尝试使用startActivityForResult()来调用AppB.FirstActivityApp B(来自App A)但是无济于事,我在onActivityResult得到的只是一个空数据。

我怎样才能得到AppB.ThirdActivity的结果?

android android-intent onactivityresult
1个回答
0
投票

我认为最好的方案是在intent消息上打开另一个应用程序。

当第二个应用程序完成其工作时,在onDestroy发送另一个intent来运行第一个应用程序。 intent应该有正确的标志来保持第一个应用程序的正确状态。

第一个应用

Intent intent = new Intent();
intent.setAction("custom.action");
MainActivity.this.startActivity(intent);

清单文件:

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="custom.action" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

第二个应用,目标活动:

@Override
protected void onDestroy() {
    Intent intent = new Intent();
    intent.setComponent(new ComponentName("com.home.androiddemo", "com.home.androiddemo.MainActivity"));
    intent.setAction("custom.android");
    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(intent);
    // TODO pass necessary outcome

    super.onDestroy();
}

清单文件:

<activity
    android:name=".MainActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="custom.action" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>
© www.soinside.com 2019 - 2024. All rights reserved.