我在Google I / O 2015上关注此示例。
演示网站:http://recipe-app.com/recipe/grilled-potato-salad
演示应用:http://search-codelabs.appspot.com/codelabs/android-deep-linking
我的测试:
我从上面的链接安装了演示应用程序。
我使用谷歌搜索应用程序进行谷歌搜索“烤土豆沙拉”,并找到http://recipe-app.com/recipe/grilled-potato-salad
我希望点击链接会直接打开应用程序,而不是消除歧义对话框(http://search-codelabs.appspot.com/img/android-deep-linking/img-5.png)。
但是,消除歧义的对话仍然让我感到惊讶。
网站上的<link rel="alternate" href="android-app://com.recipe_app/http/recipe-app.com/recipe/grilled-potato-salad" />
不是没用吗?
应用程序的清单文件:
```
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/CustomActionBarTheme" >
<activity
android:name=".client.HomeActivity"
android:label="@string/app_name"
android:exported="true"
android:theme="@android:style/Theme.Holo.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".client.RecipeActivity"
android:label="@string/app_name"
android:exported="true"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Holo.NoActionBar">
<intent-filter android:label="@string/app_name">
<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://recipe-app.com/recipe" -->
<data android:scheme="http"
android:host="recipe-app.com"
android:pathPrefix="/recipe" />
</intent-filter>
</activity>
<provider
android:name=".client.content_provider.RecipeContentProvider"
android:authorities="com.recipe_app" >
</provider>
</application>
```
答案 0 :(得分:0)
尝试使用
<intent-filter tools:node="merge" android:autoVerify="true">
在intent-filter标签中自动验证告诉Android检查网站和应用是否具有相同的共同所有者必须进行应用链接(否则,它只是深层链接,这就是为什么你看消歧对话)。
<intent-filter android:label="@string/app_name" android:autoVerify="true" >
<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://recipe-app.com/recipe" -->
<data android:scheme="http"
android:host="recipe-app.com"
android:pathPrefix="/recipe" />
</intent-filter>
现在,请尝试在设备的“默认浏览器”中首先打开链接,默认浏览器通常是Google搜索。有时,由于各种原因,应用链接可能无法在Chrome或其他应用中使用。
您已经熟悉深层链接,您也可以参考此链接https://developer.android.com/training/app-links/了解如何让您的网站网址在用户手机上重定向到您的应用(如果已安装。如果没有,请参阅'即时应用 - Android')。
答案 1 :(得分:0)
该教程确实过时了。
HTML标记确实没有用。
要使Google搜索结果具有深层链接,需要执行的操作是按照here的指示在您的生产网络服务器上公开发布https://<yoursite>/.well-known/assetlinks.json
文件:
在为您的应用设置URL支持之后,App Links Assistant将生成一个数字资产链接文件,您可以使用该文件将您的网站与您的应用相关联。
除了使用Digital Asset Links文件之外,您还可以在Search Console中关联您的网站和应用。
要使用App Links Assistant关联您的应用程序和网站,请从App Links Assistant中单击“打开数字资产链接文件生成器”,然后执行以下步骤:
App Links Assistant将引导您完成基本的URL映射图2。 输入有关您的网站和应用的详细信息以生成数字资产 链接文件。
1)输入您的站点域和您的应用程序ID。 2)将支持包括在内 您的“数字资产链接”文件中的“密码智能锁定”,选择 支持在应用程序和网站之间共享凭据,然后输入 您网站的登录URL。这会将以下字符串添加到您的Digital 资产链接文件声明您的应用和网站共享登录 凭据:proxy_permission / common.get_login_creds。学到更多 有关在应用程序中支持Smart Lock for Passwords的信息。 3)指定 签署配置或选择密钥库文件。确保选择 用于发布版本或调试的正确配置或密钥库文件 您的应用程序的构建。如果要设置生产版本,请使用 发布配置。如果要测试构建,请使用调试 配置。 4)单击生成数字资产链接文件。 5)一次Android Studio 生成文件,单击“保存文件”以下载它。 6)上传 assetlinks.json文件到您的站点,每个人都可以访问 https:///.well-known/assetlinks.json。重要提示:系统 通过加密的HTTPS验证数字资产链接文件 协议。确保可以通过以下位置访问assetlinks.json文件 HTTPS连接,无论您的应用程序的意图过滤器是什么 包括https。
7)单击“链接并验证”以确认您已正确上传 将数字资产链接文件保存到
正确的位置。