[HTC Vivid, Raider, Velocity] Yoda88:
We encountered a problem with ICS Vivid devices - the native browser is not launching/firing intents for custom scheme.

Problematic device: HTC Vivid, Android version 4.0.3.

Problematic browser: HTC native browser packaged with the device, called "Internet".

Test application: our application registered for a specific scheme.

our app registered for scheme "ourcustomscheme".

Clicking on the link with a custom scheme (ourcustomscheme) the browser does not causes the app to start.

Clicking on the same link on other devices (including HTC Vivid Android version 2.3.5) starts the app.

Clicking on the same link on same device, but in other browsers (Dolphin, Chrome) starts the app.

We have made some tests with other common schemes (mailto, http, youtube) and found weird behavior in these as well.

We think that the problem is with the particular set of (mainly HTC ICS) devices that have "App associations" program installed.

Some people have the same issue:

http://xdaforums.com/showthread.php?p=25808277

http://www.neongeo.com/forum/index.php?topic=686.0

Log study:

From HTC log + android stock browser's source code (not HTC's).

From what we see it may look like HTC browser only reacts on a handful of schemas: http, https, geo, tel, mailto and google maps;

By handling them in its own Linkifier:

===================== start of logs ========================

05-08 18:51:15.182: D/HtcLinkifyDispatcher(1962): @@@@@ getIntentByXXXX()-4-(2): scheme=https =============

05-08 18:51:15.192: D/HtcLinkifyDispatcher(1962): @@@@@ compareDataScheme()-1: dataScheme=rtsp

05-08 18:51:15.202: D/HtcLinkifyDispatcher(1962): @@@@@ compareDataScheme()-1: dataScheme=http://maps.google.com/maps?f=q&geocode=&q=

05-08 18:51:15.202: D/HtcLinkifyDispatcher(1962): @@@@@ compareDataScheme()-1: dataScheme=http://maps.google.com/maps?q=

05-08 18:51:15.202: D/HtcLinkifyDispatcher(1962): @@@@@ compareDataScheme()-1: dataScheme=http://maps.google.com/maps?

05-08 18:51:15.202: D/HtcLinkifyDispatcher(1962): @@@@@ compareDataScheme()-1: dataScheme=http://maps.google.com/maps?f=q&geocode=&q=

05-08 18:51:15.202: D/HtcLinkifyDispatcher(1962): @@@@@ compareDataScheme()-1: dataScheme=http://maps.google.com/maps?q=

05-08 18:51:15.202: D/HtcLinkifyDispatcher(1962): @@@@@ compareDataScheme()-1: dataScheme=http://maps.google.com/maps?

05-08 18:51:15.202: D/HtcLinkifyDispatcher(1962): @@@@@ compareDataScheme()-1: dataScheme=geo

05-08 18:51:15.202: D/HtcLinkifyDispatcher(1962): @@@@@ compareDataScheme()-1: dataScheme=tel

05-08 18:51:15.212: D/HtcLinkifyDispatcher(1962): @@@@@ compareDataScheme()-1: dataScheme=mailto

05-08 18:51:15.212: D/HtcLinkifyDispatcher(1962): @@@@@ compareDataScheme()-1: dataScheme=http

===================== end of logs ========================

When it cannot find those schemes in the link provided it tries to solve it itself.

Strangely though the effect is different when the app is installed and when it is not:

When the app is not installed clicking on a custom scheme in the browser displays "Page not found" browser page.

When the app is installed clicking on a custom scheme in the browser seams to cause the browser itself to resolve the link and not starting the app as described above (ast paragraph).

In both cases the browser probably tries to resolve it itself and fails.

From HTC user guide:

Choosing which app opens when you tap a

data item

You can set which app opens when you tap an item such as a phone number or email

address while reading a message, viewing a webpage, and more.

1. From the Home screen, press , and then tap Settings.

2. Tap App associations.

3. For each type of item, choose the app you want to open.

Please note that selecting app association prevents dynamic (manual) Intent resolution.

Such a resolution is a familiar method in Android when there is a request to start an activity when more than one of them are registered for the intent. In such case the common method is to prompt the user to choose from the set of resolving activities.

Usually it is also possible to mark the selected activity as default.

the ICS Vivid behaves differently, providing "App associations" tool and cancelling dynamic resolution.

Anyone had this issue before?

Thanks,

Yoda