应用程序链接不起作用。我的 Android 清单文件有什么问题?

问题描述 投票:0回答:1

我已经设置了正确的资产链接。我已经得到了 url 处理,因为它在 ios 中工作。该清单看起来正确,但它仍然没有将我的链接发送到应用程序,而是发送到网站。

这是我的 Android 清单

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.myApp.app"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:label="myApp"
        android:name="${applicationName}"
        android:icon="@mipmap/ic_launcher">

        <activity
            android:name=".MainActivity"
            tools:replace="android:name"
            android:exported="true"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">

            <meta-data
                android:name="io.flutter.embedding.android.NormalTheme"
                android:resource="@style/NormalTheme"/>

            <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" />
                    <data android:scheme="http" />
                   <data android:host="myappwebsite.com" />
                   <data android:pathPrefix="/joinGroup"/>
            </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" />
                    <data android:scheme="http" />
                   <data android:host="myappwebsite.com" />
                   <data android:pathPrefix="/channel"/>
            </intent-filter>
        </activity>

        <meta-data
            android:name="flutterEmbedding"
            android:value="2"/>

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version"/>
    </application>

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
</manifest>

我在模拟器上加载应用程序,然后运行:

adb shell am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d "https://myappwebsite.com/joinGroup?group_id=12345"

它继续带我到网站。有人有这方面的帮助吗?

android flutter android-manifest deep-linking
1个回答
0
投票

首先,您不需要仅仅因为您有两个路径前缀就需要两个不同的意图过滤器。

将两个意图过滤器合并为一个。

<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="http" android:host="myappwebsite.com" android:pathPrefix="/joinGroup"/>
                <data android:scheme="http" android:host="myappwebsite.com" android:pathPrefix="/login/evernorthltd/"/>
                <data android:scheme="http" android:host="myappwebsite.com" android:pathPrefix="/channel"/>
                <data android:scheme="http" android:host="myappwebsite.com" android:pathPrefix="/application/client-agreement/"/>
                <data android:scheme="https" />
            </intent-filter>

现在首先运行您的应用程序,然后转到终端并发布以下命令:

adb shell am start -a android.intent.action.VIEW \
  -d "https://myappwebsite.com/joinGroup"

还要捕获应用程序内的 url 并路由到特定组,您可以使用以下包:

https://pub.dev/packages/app_links

© www.soinside.com 2019 - 2024. All rights reserved.