Android的url覆盖不适用于redirect

我有一个url,我在我的Android应用程序重写。 点击电子邮件中的链接,popup“ Intent Chooser对话框(“使用完成”)。 然而,点击Chrome内部(在Android 4上)的相同链接(在<a>标签中)会将我redirect到该url,而不提供Intent Chooser

如果我将<a>标记中的链接replace为指向Google Play商店( https://play.google.com )的链接,则点击该链接会再次popupIntent Chooser

Google Play商店和Chrome浏览器有什么特别之处,或者我做了一些错误的configuration我的url? 有什么我可以做的HTML在做这个工作?

这是<intent-filter>

 <activity android:label="@string/app_name" android:name="..." > <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <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:scheme="https" android:host="www.example.com" /> <data android:scheme="http" android:host="www.example.com" /> </intent-filter> </activity> 

(redirect到URL也不会popupIntent Chooser对话框,但我认为我的情况更加尖锐地expression了我的问题。)

另外值得注意的是,我相当肯定这是所有工作,而我的域名被closures。 只要我的域名上线,这停止工作。 这可能是我的想象,因为那个时候我并不是100%专注于这个问题。

Chrome是否有可能将Google Play Storeurl视为特殊内容,否则在打开Intent Chooser之前会等待来自url的非200响应?

Solutions Collecting From Web of "Android的url覆盖不适用于redirect"

很可能是一个真正的/已知的错误。

我build议的那个(但是现在已经closures了,所以它似乎将被固定为你正在尝试的版本): https : //code.google.com/p/chromium/issues/detail?id=113140

find/由@xbakesk打开: https : //code.google.com/p/chromium/issues/detail ? id = 170925 https://code.google.com/p/chromium/issues/detail?id=230104

如果发现任何其他错误,只需在评论中告诉我,我将直接添加或编辑我的答案。 如果错误closures,我也会尝试更新答案。

我修了很多,只是告诉你一个可行的方法。 这适用于2.3.4的设备和4.2.2的设备,所以我认为它可以在大多数设备上使用。

这是我的清单文件中的意图filter:

 <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:scheme="http" android:host="realsimpleapps.com" android:pathPrefix="/acv/" /> </intent-filter> 

这是我的html文件:

 <a href="http://realsimpleapps.com/acv/aThing">Click Me!</a> 

而在我的主要活动中,我用这个来抓取任何我有“aThing”(上面)设置为:

 Uri data = getIntent().getData(); if (data != null) { List<String> params = data.getPathSegments(); if (params != null) { Log.d(tag, "Param 0: " + params.get(0)); } } 

得到这个工作,然后将第二个数据元素添加到意图filter。 如果之后仍然有效,应该设置。

让我们知道怎么回事。

D b

我不确定是否可以将多个数据元素添加到意向filter。 我会为不同的scheme使用两个不同的意图filter。

如果您可以控制网页上的url,则可以将http更改为您自己的自定义协议,以便在Web浏览器中打开而不是提示。