首页 > 解决方案 > 选择要打开的应用时,使用深度链接启动的 Activity 已完成

问题描述

我想实现深度链接,如果登录的用户打开链接,应用程序会启动一个活动,但对于未登录的用户,应用程序会在登录后启动登录活动(并将深度链接方案额外传递给该活动) ,应用程序重做深层链接并完成登录活动。

但问题是,当我完成登录时,登录活动在我完成“选择要打开的应用程序”提示之前就完成了。在打开先前预期的深度链接活动几秒钟后,导致活动被重定向到 MainActivity。

private fun redirectAfterLoggedIn() {
        if (isOpenFromDeeplink()) {
            openDeeplinkScheme()
        } else {
            openUserActivity()
        }
    }

private fun openDeeplinkScheme() {
        viewModel.deeplinkScheme?.let { scheme ->
            startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(scheme)))
            finish()
        }
    }

deeplinkScheme 变量是一个深度链接方案字符串,从以前的活动中检索

标签: android

解决方案


移动finish()onActivityResult活动中。

private fun openDeeplinkScheme() {
    viewModel.deeplinkScheme?.let { scheme ->
      startActivityForResult(Intent(Intent.ACTION_VIEW, Uri.parse(scheme)), 100);  
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == 100) {
      // do some optional data manipulation
      finish()
    }
}

推荐阅读