У меня есть два 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
каждый раз.
Чего-то мне не хватает?