将应用程序与Googlesearch结果和Chrome集成

官方维基百科应用程序以某种方式做到这一点,在我的应用程序中,我使用标准的意图filter来听取导航维基百科url。

有没有办法与Googlesearch整合? 有没有可用的API,还是只适用于select的API?

在这里输入图像说明

Solutions Collecting From Web of "将应用程序与Googlesearch结果和Chrome集成"

根据文档 ,你必须添加一个元标记到你想让search显示一个应用程序链接的页面。 例如,链接到您的屏幕截图的search结果中的Wikipedia页面的源代码中包含以下链接:

<link rel="alternate" href="android-app://org.wikipedia/http/en.m.wikipedia.org/wiki/Apollo_17" /> 

我假设你不能添加一个链接到你的应用程序通过其他方式search结果:search结果还build议用户安装他们还没有的应用程序。 赋予权力来决定哪个应用程序被build议给页面的所有者以外的人显然是危险的。 另一个强有力的暗示是文档没有提到任何替代方法。

正如我没有记错的谷歌今年宣布的Google I / O,一个API来实现这一点将可从Android L

这个公告可以在33:45的主题演讲中find,虽然没有说明它的工作原理

您需要在网页的HTML标记中注释深层链接。 您可以通过添加标签并将深度链接指定为备用URI来在每个网页的部分中执行此操作。

查看维基百科示例(我查找了您search的内容的页面源)

 <meta name="generator" content="MediaWiki 1.24wmf15" /> <link rel="alternate" href="android-app://org.wikipedia/http/en.m.wikipedia.org/wiki/Apollo_17" /> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php? title=Apollo_17&amp;action=edit" /> 

您需要将以下代码添加到您的网页:

 <html> <head> <link rel="alternate" href="android-app://com.example.android/example/gizmos" /> ... </head> <body> ... </body> 

现在要处理这个意图在应用程序,当你search的东西和链接给你一个在维基百科应用程序打开的选项,如果你想支持这两个,那么你需要修改你的Android应用程序。

首先,您需要在您的Manifest中添加该scheme。

这里是WikiPedia应用程序的工作方式。

WikiPedia应用程序在其页面查看活动中添加了如下所示的scheme。

 <activity android:name=".page.PageActivity" > <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" android:host="*.wikipedia.org" android:pathPrefix="/wiki/" /> <data android:scheme="https" android:host="*.wikipedia.org" android:pathPrefix="/wiki/" /> </intent-filter> </activity> 

你需要为你的域做同样的事情,它会工作。 如果您需要确保您的应用程序也显示在深层链接请参阅link1和link2

Android在Googlesearch结果中引入了应用链接api整合了原生应用内容。文件说:

 Google's web crawling bot (Googlebot), which crawls and indexes web sites for the Google search engine, can also index content in your Android app. By opting in, you can allow Googlebot to crawl the content in the APK through the Google Play Store to index the app content. To indicate which app content you'd like Google to index, simply add link elements either to your existing Sitemap file or in the <head> element of each web page in your site, in the same way as you would for web pages. The deep links that you share with Google Search must take this URI format: android-app://<package_name>/<scheme>/<host_path> The components that make up the URI format are: package_name. Represents the package name for your APK as listed in the Google Play Developer Console. scheme. The URI scheme that matches your intent filter. host_path. Identifies the specific content within your application. The following sections describe how to add a deep link URI to your Sitemap or web pages. 

同样重要的是, 如果用户没有在手机上的应用程序,你仍然希望在谷歌search结果的格式正确的内容,你需要使用元标签。文档说:

元标记是网站pipe理员为search引擎提供有关其网站信息的好方法。 元标签可以用来为各种客户提供信息,每个系统只处理他们理解的元标签,而忽略其余的元标签。 Meta标签被添加到您的HTML页面的部分,一般看起来像这样:

请参阅https://support.google.com/webmasters/answer/79812?hl=zh_CN

顺便说一下,这就是所谓的App Indexing ,Google有办法在Android中进行设置

以下是如何指定您的应用内容的深层链接 :

  1. 在您的Android清单文件中,为应该从Googlesearch结果中启动的活动添加一个或多个<intent-filter>元素。
  2. 添加一个指定ACTION_VIEW意图操作的<action>标记。
  3. 为活动接受的每个数据URI格式添加一个<data>标记。 这是为您的深层链接声明格式的主要机制。
  4. BROWSABLEDEFAULT目标类别添加一个<category>

    • 需要BROWSABLE才能使用Web浏览器执行该操作。 没有它,单击浏览器中的链接将无法parsing到您的应用程序,只有当前的Web浏览器才会响应该URL。
    • 如果您唯一的兴趣是通过Googlesearch结果提供与您的应用的深层链接,则不需要“ DEFAULT 。 但是,如果您希望Android应用在用户点击指向您的网站的其他任何网页的链接时作出响应,则需要使用“ DEFAULT类别。 区别在于,从Googlesearch结果中使用的意图包括您的应用程序的身份,所以意图明确指出您的应用程序作为收件人 – 其他链接到您的网站不知道您的应用程序标识,所以DEFAULT类别声明您的应用程序可以接受一个隐含的意图。

 <activity android:name="com.example.android.GizmosActivity" android:label="@string/title_gizmos"> <intent-filter android:label="@string/filter_title_viewgizmos"> <action android:name="android.intent.action.VIEW" /> <!-- Accepts URIs that begin with "http://example.com/gizmos” --> <data android:scheme="http" android:host="example.com" android:pathPrefix="/gizmos" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter> </activity> 

在这个例子中,您的应用程序将响应深层链接,如…

intentfilter的<data>元素必须至less提供android:scheme属性。 然后,您可以添加其他属性以进一步优化活动接受的URI的types。

更多信息可以在这里find…