【发布时间】:2016-06-16 03:30:04
【问题描述】:
生日,
免责声明:我不是 Android 开发人员,我正在针对我所描述的问题对 Android 应用进行 QA。我用来描述这个问题的技术术语可能是错误的。
我正在测试一个 Android 应用程序,该应用程序在其清单中描述它可以处理类型为 https://www.example.com/app/(.*) 的网络意图。它应该处理这些 URL 的方式是它获取第一个匹配组 $1 并向 https://api.example.com/$1 发送请求,如果响应是 HTTP200,它会在应用程序中呈现响应。如果没有,它应该在用户安装在其设备上的任何浏览器应用程序中打开 URL(通过发送打开 URL 的意图)。如果用户没有在他们的设备上安装浏览器应用程序,我们会显示一个错误提示,说明他们没有安装可以处理此 URL 的浏览器。
现在,这可以正常工作,除非用户将此应用程序标记为默认处理像 https://www.example.com/app/(.*) 这样的 URL,当它第一次尝试打开像 https://www.example.com/app/(.*) 这样的 URL 时。然后,即使用户在他们的系统上安装了浏览器应用程序,当他们打开需要在浏览器中打开的链接时,唯一的选择似乎是我们的原始应用程序,我们必须显示错误消息(看起来就像系统上没有安装可以处理此 URL 的其他浏览器应用程序一样)。
解决此问题的一种方法是,当我们遇到需要在浏览器应用程序中打开的 URL 但唯一的选择是我们自己的应用程序时,显示一条消息,要求用户清除此应用程序的默认值 - 但这很糟糕用户体验。这个问题还有其他解决方法吗?
了解问题的示例代码:https://gist.github.com/GVRV/5879fcf0b1838b495e3a2151449e0da3
编辑1:添加示例代码链接
【问题讨论】:
-
你能分享一些代码部分吗?所以这个很容易观察到的问题。
-
@USKMobility 添加了示例代码链接。谢谢!