0

从我的应用程序中,我扫描网站上的二维码以使同一用户登录该应用程序。我现在的做法:

我打开二维码结果:// https://example.page.link/g8uj79dsfsdfy8qrf5Bp6

   val openURL = Intent(android.content.Intent.ACTION_VIEW)

    openURL.data = Uri.parse(rawResult.getText())
    startActivity(openURL)

该应用程序重新启动并转到我设置的活动

    FirebaseDynamicLinks.getInstance()
        .getDynamicLink(intent)
        .addOnSuccessListener(this) { pendingDynamicLinkData ->
            // Get deep link from result (may be null if no link is found)
            var deepLink: Uri? = null
            if (pendingDynamicLinkData != null) {
                deepLink = pendingDynamicLinkData.link
            }

从深度链接我得到自定义令牌然后我使用自定义令牌进行身份验证并获得用户ID

  customToken?.let {
        auth.signInWithCustomToken(it)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success
                    Log.d(TAG, "signInWithCustomToken:success")
                    val user = auth.currentUser

我不想重新启动并选择选项网站或应用程序。那么如何在不启动新活动的情况下获得动态链接意图?

4

1 回答 1

1

这是我为避免启动新活动和消歧对话框而提出的解决方案:

override fun handleResult(rawResult: Result) {

    val openURL = Intent(Intent.ACTION_VIEW)
    openURL.data = Uri.parse(rawResult.text)

    FirebaseDynamicLinks.getInstance(currentfirebaseApp)
    .getDynamicLink(openURL).addOnSuccessListener {

         var deepLink: Uri? = null

         if (it != null) {
             deepLink = it.link

             val customToken = deepLink?.toString()?.substringAfter(delimiter = "*****?customToken=", missingDelimiterValue = "Token Not found")

         }

         else {
             Toast.makeText(activity!!.applicationContext,
                 "Invalid QR code",
                 Toast.LENGTH_SHORT).show()

         }

     }

}

我没有打开链接,而是只创建意图并将其与 Firebase sdk 一起使用。

于 2019-11-07T23:08:57.370 回答