在开发中,总会遇到各种好玩的事,比如与H5交互的时候解析一个uri,比如前面刚发过的scheme的页面跳转——(如果看不可以百度一下什么是scheme页面跳转,说有个url不合规,但是没说明哪条,已经替换,但不敢确定能不能通过)。而在我满心欢喜去调用的时候,却直接崩溃了,错误信息就是——“This isn’t a hierarchical URI.”,含义就是这个uri不合规,天知道运营为什么会配出来这么个鬼东西让我解析。但是boss说:“运营配错了,我去骂运营,但是你崩溃了,我就得来骂你!”
仔细反应了几秒钟,虽然我委屈,虽然我也很不服,但是boss你说的真****有道理!!!!无奈,怎么办,解决呗!
找了一下代码中报错的位置,发现是:
val uri = intent.data
val text = uri.getQueryParameterNames("text")
既然定位了,后面的事情就好办了,直接去看看getQueryParameterNames中写的到底是个什么鬼东西就好了:
@Nullable
public String getQueryParameter(String key) {
if (isOpaque()) {
throw new UnsupportedOperationException(NOT_HIERARCHICAL);
}
if (key == null) {
throw new NullPointerException("key");
}
...
}
可以看到其中有两个throw ,也就意味着,我们可能会在两种情况下崩溃,其中一种就是key为空,也不知道为毛知道不能为空,就不知道在参数前面加个@NonNull注解,这不是钓鱼执法,等着我们犯错误吗?
好吧,吐完槽了,来看我们这次崩溃遇到的问题。。。等等,这也没有This isn’t a