安卓上的Opera Mobile不能打开应用程序(不遵守意图过滤器)

7
我正在为一位客户在Android上构建定制软件,他需要将其与Opera Mobile集成(而不是其他浏览器)。其中一个要求是我们的定制软件处理浏览器中打开的特定链接。我知道比我想知道的更多关于意图过滤器的内容,但这不是问题所在。
问题在于,Opera Mobile似乎非常固执,不允许操作系统处理Opera本身可以处理的链接。例如,使用任何表现良好的浏览器(默认的Android浏览器、Chrome等)在Google上搜索“Google Play”,然后单击第一个结果(Google Play网站):根据您的现有设置,您可能会收到有关使用哪个应用程序的提示,或者Google Play应用程序会直接打开。现在在Opera Mobile中尝试相同的操作:Opera只会打开Google Play网站本身——显然这是不可取的,因为现在你不能安装应用程序,只能浏览目录。
有人知道如何说服Opera Mobile在这方面表现得正确吗?我正在测试Opera Mobile版本12.10。

我知道这很久了,但你找到解决方案了吗?我正在使用 Opera(已经是 V.43),但它似乎仍然不尊重意图。 - Tobias Reich
我不确定我记得我是如何解决这个问题的,但我想我必须去使用自定义协议的 Ugly Way(tm) - 它确实尊重该协议,因为它不知道如何处理它。例如,我没有注册foo.com并打开http://foo.com/,而是注册了myprotocol协议,并要求它打开myprotocol://foo.com/。希望对你有帮助。我现在注意到我已经在2015年回答过同样的问题 - 请参见我对下面唯一答案的评论。至少就我而言,这似乎每隔一年就会出现一次。有趣的是,明天将是自从我提出原始问题以来的第四年。 - Bogdan Stăncescu
哈哈,至少我不是一个人在这个问题上。谢谢你的帮助! - Tobias Reich
1个回答

0
尝试使用意图URL而不是默认URL。 示例:
default - "http://myhost.com/test"
intent - "intent://myhost.com/test#Intent;action=android.intent.action.VIEW;scheme=http;end;"

更多详情请见:

Chrome Intents

Intent Filters


我不知道意图的存在 - 但它们与声明自己的协议(例如gutza://myhost.com/test)实际上是完全相同的,因为它破坏了标准并且不能平稳降级(考虑跨平台)。当我在2013年遇到这个问题时,我最终声明了一个协议,因为我找不到任何解决方法(客户确实需要使用Opera)。依我之见,意图URL同样不够优雅,唯一的优点是可以独立于应用程序编写意图URL(对我来说当时无关紧要)。尽管如此,感谢您抽出时间回答,我确实学到了一些新东西! - Bogdan Stăncescu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接