Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Intent filter for opening app from a link not working in Samsung Browser/Firefox etc. but working in Chrome

I have been experimenting with the Intent Filters for the past few hours, and I am really confused as to why the Google tutorial code for Handling App Links via Intent Filters is not working on my physical Samsung S8 devices's default Samsung browser or Firefox installed on it however working from the Google Chrome app.

The code also works both in the default Android Studio Nexus 5's emulator default browser app as well as from Google Chrome.

Here is the relevant code I have in the AndroidManifest.xml of the bare-bones app I am trying to diagnose the problem with:

<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" />
    <data android:scheme="https" />
    <data android:host="www.android.com"  />
</intent-filter>

What I am doing to test:

I click on a link for https://www.android.com from a search results page on Google.

I expect to see a open with dialog with my test apps name however it does not show when I try this from anything but the the google chrome browser (and the Nexus 5 emulators default browser) it just automatically shows the webpage with no popup dialog.

N.B. I have tried also tried the following things so far to no avail:

  • Changing the first line to <intent-filter android:autoVerify="true">
  • Adding the line <data android:host="www.android.com/" /> in case the the problem has anything to do with the / at the end of URL.
  • Clearing the both browsers data/storage & generally resetting it.

Does anyone know why this is happening / how to fix this?

like image 456
Sash Sinha Avatar asked Feb 04 '23 06:02

Sash Sinha


1 Answers

The browsers itself need to support and implment the browsability. The browsers have to find other activities supporting android.intent.category.BROWSABLE when opening a web-page.

Firefox implements a less invasive experience to the user. When an url is opened which has a deep link to an app, the url bar displays a page action with a little Android head. Clicking on this one will open the link with an Android activity other than a browser.

The behavior of the Android browser and Chrome you observed and made your expectation. So nothing to add to this.

I'm not sure if I can fully talk about the Samsung browser, because the versions I have on my devices might be somehow outdated; but I couldn't make it work with these at all.

The android:autoVerify attribute only makes the app the default on installation. android:host="www.android.com/" is just wrong, because / is the path and not part of the host.

like image 108
tynn Avatar answered Feb 06 '23 20:02

tynn