Android startActivityForResult () для вызова другой активности приложения и получения результата назад? - PullRequest
0 голосов
/ 02 мая 2020

У меня есть два android приложения «AppA» и «AppB». AppA имеет кнопку, которая запускает AppB для получения подробной информации о пользователе. AppB должен вернуться обратно в AppA с необходимой информацией пользователя в качестве дополнения к намерениям.

MainActivity в AppA:

 private const val USER_REQUEST_CODE = 0xdafe
// Get user Button Click Handler function
    fun getUserInfo(){
        val userIntent = this.packageManager.getLaunchIntentForPackage("com.appb")
        if(userIntent!= null){
          currentActivity.startActivityForResult(userIntent,USER_REQUEST_CODE)
        }
    }
// Function to catch the response
  override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        when(requestCode){
            USER_REQUEST_CODE -> {
                if (resultCode == Activity.RESULT_OK && data != null) {
                    val userData = data.getStringExtra("user")
                    Log.d(TAG, "User Response received: $userData")
                }else{
                    Log.d(TAG,"User Response is empty")
                }
            }
        }
    }

MainActivity в AppB:

// function to return back the result back to AppA.
fun returnResult(){
    val data = Intent()
    data.putExtra("user","testuser")
    setResult(Activity.RESULT_OK, data)
    finish()
}

С этим кодом приложение A может запустить приложение B после нажатия кнопки, вызвав функцию getUserInfo (). Затем появится приложение B и загрузит информацию о пользователе. Наконец, он пытается вернуться обратно в приложение A, вызвав функцию returnResult (). Но приложение A не возвращается обратно на экран.

Функция onActivityResult () в AppA, однако, вызывается сразу после вызова функции getUserInfo (). Он не ждет ответа приложения B. Таким образом, он печатает User Response is empty каждый раз.

Чего-то мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...