我想在用户点击我的网页链接时打开我的Android应用程序(最好是从Facebook分享帖子,但让我们从普通网址开始)。
为实现这一目标,我创建了一个活动UrlReceiver
,并将此代码添加到我的AndroidManifest.xml
文件中(网址仅用于测试目的):
<activity
android:name=".main.core.UrlReceiver"
android:exported="true">
<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="martinfowler.com"
android:pathPrefix="/"
android:scheme="http"/>
<data
android:host="www.martinfowler.com"
android:pathPrefix="/"
android:scheme="http"/>
<data
android:host="test"
android:scheme="myapp"/>
</intent-filter>
</activity>
这适用于 Firefox for Android ,当我输入myapp://test/
时,它会自动打开我的应用,当我输入martinfowler.com
时,网址旁边有一个Android头这导致了我的应用程序。这很好。
但谷歌浏览器 。当我输入myapp://test/
时,它会启动Google搜索,当我输入martinfowler.com
时,它会打开网页。
我开始在网上挖掘这个并发现这个文档:https://developer.chrome.com/multidevice/android/intents,开辟了自定义模式不再适用于Chrome,所以我尝试使用这个URL(根据文档):
intent://test/#Intent;scheme=myapp;package=com.my.app;end
intent://#Intent;scheme=myapp;package=com.my.app;end
intent://test/#Intent;package=com.my.app;scheme=myapp;end
intent://#Intent;package=com.my.app;scheme=myapp;end
但这些也开始谷歌搜索。我该怎么办,从谷歌浏览器中的URL打开我的应用程序?
我在KitKat和Lolipop上测试了这个。
答案 0 :(得分:5)
问题在于我一直输入(或复制)网址到Chrome Omnibox(搜索栏)并根据此问题:https://code.google.com/p/chromium/issues/detail?id=451956它是不再支持:
在http://crbug.com/331571我们决定不启动意图 原始导航是从用户输入开始的,因为我们想到了 用户通常不会在键入时离开Chrome 进入多功能框的URL。
因此,从Google Chrome中的网址打开应用仅适用于链接点按,并且在使用搜索栏时无效。