从Android浏览器/ Chrome启动自定义Android应用程序

首先,我和这个问题是非常相似的。 我想要实现的Android文档就在这里 。 我无法得到这个工作使用这些资源,所以请不要标记为重复,因为它不是。

我有一个网站和一个Android应用程序。 用户将能够扫描包含http://mywebsite.com/map/等链接的QR码。 当用户试图打开这个链接时,我希望Android向他展示一个select器对话框,他可以select使用我的应用程序打开该链接。 如果我的应用程序没有安装,它应该进入指定的网站。

我知道当用户导航到该地址时,Chrome浏览器允许通过打开select器对话框。 例如,请尝试下载Stack Exchange应用程序 ,然后在Chrome中转到此问题。 它会显示这个:

选择器对话框的屏幕截图。

在上述答案中的build议之后,我在AndroidManifest.xml中添加了以下代码:

<intent-filter> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="mywebsite.com" android:path="/map" android:scheme="http" /> <data android:host="mywebsite.com" android:path="/animals" android:scheme="http" /> <data android:host="mywebsite.com" android:path="/articles" android:scheme="http" /> </intent-filter> 

此外,我已经尝试添加android:mimeType =“text / plain”到数据,但它没有帮助。

问题是,当我去http://mywebsite.com/map或http://mywebsite.com/map/ Chrome只是打开网页,而不显示select器对话框。

我想提一下:

  • 遵循Android文档,我在AndroidManifest.xml的一个活动结构中添加了这个代码。 因为我不确定这是不是完美的地方添加它,我也尝试将其添加到应用程序结构之外,直接在应用程序结构中,但它没有工作
  • 这是我为此工作的唯一代码。 如果需要其他东西,请告诉我。 据我所知,只有在使用自定义模式时才需要在网页中添加href
  • 我不想使用自定义模式来实现这一点
  • 我正在开发Nexus 4,运行Android 4.4.2(最新版本)

你需要像这样设置它:

 <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="example.com" android:pathPrefix="/someresource/" android:scheme="http" /> <data android:host="www.example.com" android:pathPrefix="/someresource/" android:scheme="http" /> </intent-filter> 

注意,在你的情况下,你将需要使用android:pathPrefix而不是android:path。

可以肯定的是,如果您不小心将其设置为始终打开链接,而不是显示select器对话框,则应该重置应用程序的首选项。 一旦“总是”用来打开匹配的URI,它将永远不会显示select器。

其次,可以根据需要在意向filter中包含尽可能多的数据元素,但不必重复信息。 你可以做同样的事情,像这样:

 <data android:host="mywebsite.com"/> <data android:scheme="http"/> <data android:path="/map"/> <data android:path="/animals"/> <data android:path="/articles"/> 

但请注意,对于path,您可以使用通配符

 <data android:path="/.*"/> 

考虑添加一个额外的

 <data android:host="www.mywebsite.com"/> 

最后,您可能不想显示select器对话框,而是直接打开特定的应用程序意图/活动。 在你的网站上,如果你检测到android用户代理,你可以这样创build一个链接url:

 <a href="intent://mywebsite.com/articles#Intent;package=com.myapp;scheme=http;end;"/> 

在这里看到更多的细节如何从Android的我的网页浏览器(Chrome)中打开任何应用程序? 我需要做什么与A Href链接?

请注意,使用此方法,如果未安装应用程序,用户将被带到Google Play商店获取指定的应用程序包。

如果您仍然遇到问题,请检查您的意图filter优先级。 http://developer.android.com/guide/topics/manifest/intent-filter-element.html

在我的情况下,网站的url是: http//www.example.org/mobile/

所以把这些代码放到AndroidManifest.xml里面就行了

  <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="www.example.org" android:pathPrefix="/mobile/" android:scheme="http" /> </intent-filter> 

这里,

scheme – >特定网站的协议

主机 – >确切的网站与WWWurl

pathprefix – >您的网站的子path(如果可用)

现在,

您可以search与铬/等Android的浏览器search框样例然后打开select对话框..!