Android 如何在不启动活动的情况下从动态链接获取FireBaseDynamicLink实例/自定义令牌,消除歧义对话框。?
从我的应用程序中,我扫描网站上的QRcode,让相同的用户登录到应用程序上。我现在的做法是: 我打开二维码结果:// 应用程序重新启动并转到我设置的活动Android 如何在不启动活动的情况下从动态链接获取FireBaseDynamicLink实例/自定义令牌,消除歧义对话框。?,android,firebase,firebase-authentication,firebase-dynamic-links,android-deep-link,Android,Firebase,Firebase Authentication,Firebase Dynamic Links,Android Deep Link,从我的应用程序中,我扫描网站上的QRcode,让相同的用户登录到应用程序上。我现在的做法是: 我打开二维码结果:// 应用程序重新启动并转到我设置的活动 FirebaseDynamicLinks.getInstance() .getDynamicLink(intent) .addOnSuccessListener(this) { pendingDynamicLinkData -> // Get deep link from r
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
}
我从deeplink获得自定义令牌
然后我使用自定义令牌进行身份验证,并获得用户ID
customToken?.let {
auth.signInWithCustomToken(it)
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
// Sign in success
Log.d(TAG, "signInWithCustomToken:success")
val user = auth.currentUser
我不想重新启动并选择选项网站或应用程序。
因此,如何在不启动新活动的情况下获得动态链接意图?这是我提出的避免启动新活动和消除歧义对话框的解决方案:
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一起使用
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()
}
}
}