android 如何绕过歧义消除对话框时,点击一个网址?

7gyucuyw  于 2022-12-21  发布在  Android
关注(0)|答案(1)|浏览(136)

对于我的用户,我在Firebase中发送验证电子邮件。我收到的链接是:

https://myprojectid.firebaseapp.com/...

当用户点击链接时,我希望打开应用程序并导航到特定屏幕。下面是我的尝试。在清单文件中,我有:

<activity
    android:name=".MainActivity"
    android:exported="true">

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data android:scheme="https" android:host="myprojectid.firebaseapp.com"/>
    </intent-filter>

    <meta-data
        android:name="android.app.lib_name"
        android:value="" />
</activity>

我读到这里,添加android:autoVerify="true"将停止歧义消除对话框出现。但这不是真的。这里也是我的NavHost:

NavHost(
    navController = navController,
    startDestination = Screen.SignInScreen.route
) {
    composable(
        route = Screen.SignInScreen.route
    ) {
        SignInScreen{
            navController.navigate(Screen.CheckScreen.route)
        }
    }
    composable(
        route = Screen.CheckScreen.route,
        deepLinks = listOf(
            navDeepLink {
                uriPattern = "https://myprojectid.firebaseapp.com"
                action = Intent.ACTION_VIEW
            }
        )
    ) {
        CheckScreen()
    }
}

当我点击链接时,系统仍然要求我选择使用Chrome浏览器还是我的应用程序打开。我该如何避免这种情况?如有任何帮助,我们将不胜感激。

kqqjbcuj

kqqjbcuj1#

从Android 11开始,您需要指定软件包管理器的使用。因此,在Manifest顶层添加以下内容:

<queries>
    <package android:name="com.yourapp" />
    </queries>

然后开始你的意图:

val resultIntent: Intent? = packageManager.getLaunchIntentForPackage("com.yourapp")

        resultIntent.data = (Uri.parse("https://myprojectid.firebaseapp.com"))
        startActivity(resultIntent)

相关问题