act通过uri传递参数

作者: tmp_zhao | 来源:发表于2016-08-29 17:54 被阅读383次

我们经常需要在启动act的时候传递某些参数,这时一般有2种做法:

  1. 通过Intent暴露的各种putXXX方法;
  2. 通过Uri(Intent.getData())param传递;

大部分情况下,我们都会选择第1种方式,偶尔某些数据量很小、轻量级的情况下,可能也会选择第2种方式,但是在使用第2种方式时还是有问题要特别注意下,即url编码问题。

你通过第2种方式绝大多数情况下也都是ok的,但当你用它来传递的某些值里含有特殊字符时,这时解析就会出错,比如像这样“mgj://payresult?textcolor=#ff0000&money=100.85元”
你期望能解析出textcolor=#ff0000money=100.85元,可是由于特殊字符#的存在,你的解析会失败!
代码如下:

String urlParam = "mgj://payresult?textcolor=#ff0000&money=100.85元";
Uri uri = Uri.parse(urlParam);
String textcolor = uri.getQueryParameter("textcolor");
String money = uri.getQueryParameter("money");
System.out.println("textcolor = " + textcolor + ", money = " + money);

出问题的原因是,url中key=value这样的键值对没有进行url编码,正确的做法应该如下:

Uri.Builder builder = Uri.parse("mgj://payresult").buildUpon();
builder.appendQueryParameter("textcolor", "#ff0000");
builder.appendQueryParameter("money", "100.85元");
String urlParam = builder.toString();
Uri uri = Uri.parse(urlParam);
String textcolor = uri.getQueryParameter("textcolor");
String money = uri.getQueryParameter("money");
System.out.println("textcolor = " + textcolor + ", money = " + money);

至此,2组key、value都可以正确的解析出来了。

相关文章

  • act通过uri传递参数

    我们经常需要在启动act的时候传递某些参数,这时一般有2种做法: 通过Intent暴露的各种putXXX方法; 通...

  • Elasticsearch(二):SearchAPI

    URI Search URI Search 通过 url query 参数来实现搜索。 q 参数指定查询语句,如果...

  • 服务参数传递

    微服务(服务)参数传递问题 一、前端参数传递 get请求 传递简单数据复杂点的入数组等,可以在uri中使用{par...

  • django url位置参数传递到view函数

    位置参数是指我们在uri的路径中将数据通过url传递给视图函数的一种方式,先看段代码,然后我们分析下传递的过程 u...

  • JAVA URI 工具类

    URI Class URI语法和组成部分 使用字符串格式描述URI 。URI通过解析字符串获取指定参数 . 比如 ...

  • Generator(三)

    Iterator高级功能 给迭代器传递参数 可以通过next()方法给迭代器传递参数。当通过next()传递参数时...

  • 页面切换及参数传递

    页面切换及参数传递 在课程的大纲 通过组件a切换页面和传递参数 通过接口router切换页面和传递参数 接收参数 ...

  • php函数参数

    传递参数的几种形式 1. 按值传递参数 默认的形式 2.通过引用传递参数 通过引用可以修改数据原始值 3.默认参数...

  • 通过Cookie传递参数

    功能需求:在母版页面中有一个选择省市的repeater,选择省市后将省市的id存入Cookie中,在子页面获取使用。

  • Flutter函数参数

    ()参数按顺序传递{}可不按照顺序传递,可以通过类似kotlin的具名参数传递,也可在实例话对象后,再通过对象赋值...

网友评论

    本文标题:act通过uri传递参数

    本文链接:https://www.haomeiwen.com/subject/wctfettx.html