Android开发进阶经验分享Android知识Android开发

Uri.Builder#appendQueryParameter

2017-05-26  本文已影响268人  tmp_zhao

当我们在代码里需要构造一个uri的时候,建议的做法是通过Uri.Builder来做,而不是简单的字符串拼接,因为常常简单的case字符串拼接是可以的,一旦涉及到复杂的、特殊字符需要url encode的就不能很好的work。今天要跟大家分享的是Uri.Builder的appendQueryParameter方法,因为最近我们在这个方法上不小心翻车了。。。

我们有类似下面的代码:

    boolean isFromH5 = callSomeMethod();
    Uri.Builder builder = Uri.parse("mgj://xxx").buildUpon();
    builder.appendQueryParameter("aaa", "111");
    if (isFromH5) {
        // 想把"111"替换成"222"!!!
        builder.appendQueryParameter("aaa", "222");
    }
   String url = builder.toString();
   System.out.println("url ============= " + url);

我们要做的是期望当isFromH5成立的时候,能用新值“222”,替换掉同一个key的原始值“111”,当然这里的值都是举例说明而已。

但最终这段代码当isFromH5成立的时候却没能让我们如愿,实际的结果是:
mgj://xxx?aaa=111&aaa=222,并不是期望的mgj://xxx?aaa=222。这一点还是挺让我们震惊的,但事后想想人家这方法既然叫append,确实是想just append,并不会判断key存不存在等等。

在这里总结分享下,大家有用到的注意下,避免踩坑咯。。。

上一篇下一篇

猜你喜欢

热点阅读