Android知识点-Uri解析异常——This isn‘t a hierarchical URI.

博客讲述了在Android开发过程中遇到的一个问题,即由于URI不合规导致应用崩溃。作者通过代码分析发现,当尝试解析一个不合规的非层次URI时,会触发错误。解决方案是在解析前先检查URI是否符合规范,避免直接调用可能导致崩溃的方法。同时,作者吐槽了API设计的不合理性和运营配置错误带来的困扰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  在开发中,总会遇到各种好玩的事,比如与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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值