Связь между приложениями в Android: как завершить приложение (приложение B) и вернуть данные в приложение вызывающего (приложение A) - PullRequest
0 голосов
/ 31 августа 2018

У меня есть два приложения. App A и App B.

App A является основным приложением. App A может открыться App B. App B, с другой стороны, представляет собой отдельное приложение с 3 действиями.

AppB.FirstActivity = Давайте пользователю выбирать элементы из списка
AppB.SecondActivity = выполнить обработку на основе выбранных элементов
AppB.ThirdActivity = Это где пользователь может принять результаты или повторить попытку обработка

App A хотел бы получить информацию на основе вывода AppB.ThirdActivity.

Я пытался использовать startActivityForResult() для вызова AppB.FirstActivity из App B (от App A), но безрезультатно, все, что я получаю в onActivityResult, это нулевые данные.

Как мне получить результат AppB.ThirdActivity?

1 Ответ

0 голосов
/ 31 августа 2018

Я думаю, что лучший сценарий - открыть другое приложение поверх 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...