【问题标题】:Opera Mobile on Android doesn't open apps (doesn't respect intent-filter)Android 上的 Opera Mobile 不打开应用程序(不尊重意图过滤器)
【发布时间】:2013-11-20 20:24:04
【问题描述】:

我正在为需要将其与 Opera Mobile 集成(而不是其他浏览器)的客户在 Android 上构建自定义软件。其中一项要求是在浏览器中打开的特定链接由我们的定制软件处理。我对意图过滤器的了解比以往任何时候都多,这不是问题所在。

问题在于 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),但它似乎仍然不尊重意图。
  • 我不确定我到底记得我是如何整理出来的,但我想我必须走 Ugly Way (tm)——我使用了自定义协议;它确实尊重,因为它不知道如何处理它,例如我没有注册 foo.com 并打开 foo.com,而是注册了协议 myprotocol 并要求它打开 myprotocol://foo.com/。 HTH。我现在注意到我在 2015 年回答了同样的问题——请参阅我对下面唯一答案的评论。这似乎每隔一年就会出现一次,至少就我而言。有趣的是,明天将是我提出最初问题的 4 年后。
  • 哈,至少我并不孤单。感谢您的帮助!

标签: android opera intentfilter


【解决方案1】:

尝试使用意图网址而不是默认网址。 示例:

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(这在当时对我来说无关紧要)。不过,感谢您花时间回答,我确实学到了一些新东西!
猜你喜欢
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
  • 1970-01-01
相关资源
最近更新 更多