Deep Link 不适用于 Android
Deep Link does not work on Android
我正在按照 Android 开发人员文档中的 Create Deep Links to App Content 创建 Link 到 Android 应用程序中的 Activity。
新的应用程序项目,我指定的 activity 与该教程中的完全一样:
<activity
android:name="com.example.android.GizmosActivity"
android:label="@string/title_gizmos" >
<intent-filter android:label="@string/filter_view_http_gizmos">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
<data android:scheme="http"
android:host="www.example.com"
android:pathPrefix="/gizmos" />
<!-- note that the leading "/" is required for pathPrefix-->
</intent-filter>
<intent-filter android:label="@string/filter_view_example_gizmos">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with "example://gizmos” -->
<data android:scheme="example"
android:host="gizmos" />
</intent-filter>
</activity>
当我用 adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.example.android
测试时,它有效。 phone 上的 OS 启动应用程序。
但是当我通过导航 chrome 到 example://gizmos
进行测试时,应用程序没有启动,chrome 只是 google 搜索该 URI。为什么它不起作用?
(我正在为 Nexus 5X API 26 使用 Android 模拟器)。
这是由于 Chrome 没有关注深度 link 如果您手动将其输入地址栏。有关详细信息,请参阅此 。
测试深度 linking 的最简单方法是将 link 输入 Android 消息应用程序。发送消息后,您可以单击 link。
您还可以在某个地方托管一个页面,您的深度 link。
我正在按照 Android 开发人员文档中的 Create Deep Links to App Content 创建 Link 到 Android 应用程序中的 Activity。
新的应用程序项目,我指定的 activity 与该教程中的完全一样:
<activity
android:name="com.example.android.GizmosActivity"
android:label="@string/title_gizmos" >
<intent-filter android:label="@string/filter_view_http_gizmos">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
<data android:scheme="http"
android:host="www.example.com"
android:pathPrefix="/gizmos" />
<!-- note that the leading "/" is required for pathPrefix-->
</intent-filter>
<intent-filter android:label="@string/filter_view_example_gizmos">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with "example://gizmos” -->
<data android:scheme="example"
android:host="gizmos" />
</intent-filter>
</activity>
当我用 adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.example.android
测试时,它有效。 phone 上的 OS 启动应用程序。
但是当我通过导航 chrome 到 example://gizmos
进行测试时,应用程序没有启动,chrome 只是 google 搜索该 URI。为什么它不起作用?
(我正在为 Nexus 5X API 26 使用 Android 模拟器)。
这是由于 Chrome 没有关注深度 link 如果您手动将其输入地址栏。有关详细信息,请参阅此
测试深度 linking 的最简单方法是将 link 输入 Android 消息应用程序。发送消息后,您可以单击 link。
您还可以在某个地方托管一个页面,您的深度 link。