Как получить данные onActivityResult из внешней активности приложения с помощью seResult или startActivityForResult

У меня есть два приложения отдельно. Приложение клиента и продавца. Я хочу заплатить деньги за клиентское приложение и получить ответ на приложение продавца. Во всяком случае, у меня включена концепция глубоких ссылок в приложении продавца. Клиентское приложение: у него есть три страницы действий внутри клиентского приложения. Получение сведений (первая страница действий) и подтверждение подтверждения (второе действие), а оплата — третье действие. Примечание. Откройте клиентское приложение с помощью приложения продавца, заполните все данные и оплату из клиентского приложения и отправьте ответ в приложение продавца. для этой клиентской стороны я установил для этого код:

Intent object = new Intent();
object.putExtra("data", "3434434343343");
setResult(Activity.RESULT_OK, object);
finish();

для кода приложения продавца:

protected void onActivityResult(int ResCode, int ReqRes, Intent data) {

super.onActivityResult(ResCode, ReqRes, data);

if (ResCode == 1 && ReqRes == Activity.RESULT_OK && data != null) {

String response = data.getStringExtra("data");

}
}

Проблема здесь: со стороны клиента успешная передача данных с использованием setResult.then, активность приложения продавца также успешно вызывает onActivityResult, но данные Intent поступают только как NULL.Потому что здесь клиентская сторона использует несколько действий, используя только тогда, я передаю Результат. Это моя проблема. Если в любом случае есть возможность получить onActivityResult из нескольких действий по цепочке (внешние действия приложений), это полезно для меня.

Примечание. Я нашел одно решение, если два приложения, имеющие одно действие, означают, что его правильно установленный результат, а OnactivityResult вызывает и получает данные. Но мой сценарий, если для нескольких цепочек действий для клиентского приложения.

Пожалуйста, помогите выйти из этого выпуска. Спасибо заранее


person harikrishnan    schedule 03.08.2016    source источник
comment
Хромой вопрос: пытались ли вы впоследствии прочитать данные в onActivityResult(), а затем установить их как setResult() в своих действиях, связанных по цепочке?   -  person Shaishav    schedule 03.08.2016
comment
я хочу вернуть ответ от третьего действия в приложение продавца, в любом случае, я сделал setResult только для третьего действия. здесь я не хотел передавать данные из цепочек действий в клиентское приложение. Я просто хочу отправить данные ответа в приложение Seller onActivityResult.   -  person harikrishnan    schedule 03.08.2016
comment
Итак, дайте мне знать, правильно ли я понимаю. За приложением продавца следует клиентское приложение, где пользователь переходит к третьему действию, где он генерирует данные, которые должны быть отправлены в приложение продавца (возможно, через setResult())   -  person Shaishav    schedule 03.08.2016
comment
да. вы на правильном пути .. это мой сценарий.   -  person harikrishnan    schedule 03.08.2016
comment
спасибо за ответ, сахар.. последняя активность, которую мы установили, setResult верна. Но я хочу отправить ответ приложению продавца, а не первому действию.   -  person harikrishnan    schedule 04.08.2016


Ответы (2)


Основываясь на приведенном выше сценарии использования, я считаю, что лучшей архитектурой, которая позволила бы такое общение, было бы, если клиентское приложение использует настройку на основе Fragment. Здесь вы можете запустить клиентскую активность из приложения продавца, позволить пользователю переходить к различным фрагментам там, а затем использовать setResult() там, где это удобно. Так как это поведение настройки результата действия один к одному, оно должно работать.

Еще одно предложение, которое вы можете попробовать, если вы не хотите идти по пути фрагмента, находится в клиентском приложении, поскольку пользователь переходит к различным действиям, вы можете немедленно вызвать в них finish(), а затем в последнем вызове действия setResult(). Это, вероятно, не сработает, но [очень] маленькая часть меня говорит, что может :).

person Shaishav    schedule 03.08.2016
comment
Спасибо за ответ. для первого предложения я хочу изменить общий код активности приложения на код фрагмента. Это большое изменение для меня ... но я подумаю окончательным образом. - person harikrishnan; 03.08.2016
comment
второй, я уже пробовал, в третьем действии я установил для setResult(). Когда я вернусь в приложение Seller, его вызов onActivityResult() успешно, но данные Intent становятся нулевыми. Этот метод не отработан. . - person harikrishnan; 03.08.2016

Вы можете перейти от ThirdActivity к FirstActivity, а затем вернуться обратно в приложение продавца с помощью метода onNewIntent вашего FirstActivity.

После завершения всех трех процедур ваше клиентское приложение должно иметь следующие стеки.

FirstActivity -> SecondActivity -> ThirdActivity

И ваш ThirdActivity находится на вершине стека. Ваш ThirdActivity может перейти к FirstActivity, используя следующий код

Intent toFirstIntent = new Intent(this, FirstActivity.class);
toFirstIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
toFirstIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(toFirstIntent);
finish();

Затем в своем FirstActivity вы можете установить данные и вернуться в приложение продавца.

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    Intent data = new Intent();
    data.putExtra("data", "12345678");
    setResult(RESULT_OK, data);
    finish();
}
person alijandro    schedule 03.08.2016