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

爱⌒轻易说出口 提交于 2019-12-07 10:03:51

问题


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?


回答1:


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.




回答2:


Opening the app for certain links only

<intent-filter>
  <action android:name="android.intent.action.VIEW"></action>
  <category android:name="android.intent.category.DEFAULT"></category>
  <category android:name="android.intent.category.BROWSABLE"></category>
  <data android:scheme="spuul"></data>
</intent-filter>

With this, all URI’s like spuul://movies/123 will be openend by the app. The app is then able to handle this URI and launch the correct content. The link to Google Play like market://details?id=com.spuul.android.

Fallback to market if app is not installed

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


来源:https://stackoverflow.com/questions/44590382/intent-filter-for-opening-app-from-a-link-not-working-in-samsung-browser-firefox

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!