Я хочу вернуть некоторые данные из моего дочернего действия ActivityChild
в мое основное действие ActivityMain
Сначала я вызываю свой ActivityChild
из моего ActivityMain
таким образом:
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivityForResult(intent, 1)
// Actually, this code first launch chrome, then when the user identify on
// chrome, the redirect_uri calls the ActivityChild
затем я возвращаю свои данные из ActivityChild
в ActivityMain
следующим образом:
val data: Uri? = intent.data
val returnedIntent = Intent();
returnedIntent.putExtra("code", data!!.getQueryParameter("code"))
setResult(Activity.RESULT_OK, returnedIntent)
finish()
и, наконец, я перехватываю данные с переопределением onActivityResult в ActivityMain
:
public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 1) {
if (resultCode == Activity.RESULT_OK) {
val returnedValue = data!!.getStringExtra("data")
}
else if (resultCode == Activity.RESULT_CANCELED)
Log.d("mDebug", "Couldn't retrieve data") // Always enters here
else
Log.d("mDebug", "final")
}
}
Это продолжается в состоянии Activity.RESULT_CANCELED
. Я не могу решить это, если это разрешимо.
Я считаю, что причина в том, что я сначала запускаю хром через намерение, и что каким-то образом данные не могут быть переданы в файл ActivityMain
. Я далек от того, чтобы знать все, что касается намерений, и я, вероятно, что-то здесь упускаю, поэтому, если кто-то может мне помочь и объяснить это, пожалуйста!