目前,我的应用程序中有深层链接集成
<activity android:name="org.yccheok.jstock.gui.news.NewsListFragmentActivity"
android:theme="@style/Theme.JStock.Toolbar.Transparent.Light"
android:windowSoftInputMode="stateAlwaysHidden" >
<intent-filter>
<!-- Sets the intent action to view the activity -->
<action android:name="android.intent.action.VIEW" />
<!-- Allows the link to be opened from a web browser -->
<category android:name="android.intent.category.BROWSABLE" />
<!-- Allows the deep link to be used without specifying the app name -->
<category android:name="android.intent.category.DEFAULT" />
<!-- Accepts URIs that begin with "http://jstock.co/a/news” -->
<data android:scheme="http"
android:host="jstock.co"
android:pathPrefix="/a/news" />
</intent-filter>
</activity>
当用户点击具有以下格式的已接收链接时
http://jstock.co/a/news?code=XOM&symbol=Exxon+Mobil+Corpo
假设这是安装了应用的用户。将显示以下屏幕
如果用户选择本机应用程序JStock,将启动本机应用程序,他将获得有用的信息。
但是,如果用户选择chrome并单击 JUST ONCE ,则它不是很有用。最糟糕的是,如果用户选择chrome并点击始终,本机应用将永远无法通过深层链接启动。
我想知道,有什么好方法可以避免这种问题?我们如何确保深层链接始终打开我们自己的原生应用而不是打开Chrome浏览器?
感谢@CommonsWare。我已将AndroidManifest.xml更改为
<activity android:name="org.yccheok.jstock.gui.news.NewsListFragmentActivity"
android:theme="@style/Theme.JStock.Toolbar.Transparent.Light"
android:windowSoftInputMode="stateAlwaysHidden" >
<intent-filter android:autoVerify="true">
<!-- Sets the intent action to view the activity -->
<action android:name="android.intent.action.VIEW" />
<!-- Allows the link to be opened from a web browser -->
<category android:name="android.intent.category.BROWSABLE" />
<!-- Allows the deep link to be used without specifying the app name -->
<category android:name="android.intent.category.DEFAULT" />
<!-- Accepts URIs that begin with "http://jstock.co/a/news” -->
<data android:scheme="http"
android:host="jstock.co"
android:pathPrefix="/a/news" />
<!-- Accepts URIs that begin with "https://jstock.co/a/news” -->
<data android:scheme="https"
android:host="jstock.co"
android:pathPrefix="/a/news" />
</intent-filter>
</activity>
我还确保可以使用以下内容访问https://jstock.co/.well-known/assetlinks.json。
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "org.yccheok.jstock.gui",
"sha256_cert_fingerprints":
["F4:6B:DF:4F:21:74:72:2F:88:E0:4C:09:2A:0C:00:C8:9A:16:D0:C6:DB:9C:BC:46:17:93:52:F4:35:AE:DB:98"]
}
}]
仍然点击http://jstock.co/a/news?code=XOM&symbol=Exxon+Mobil+Corpo,仍然让用户选择Chrome。
我使用Android 6测试过,使用已发布的密钥编译APK。
我有什么遗漏的吗?
答案 0 :(得分:1)
根据the documentation设置assetlinks.json
文件并要求验证。在Android 6.0及更高版本中,如果您的assetlinks.json
可以找到并经过验证,则您的应用将用于<intent-filter>
处理的网址。