Android Uri

就Android平台而言,URI主要分三个部分:scheme, authority and path。其中authority又分为host和port。格式如下:

scheme://host:port/path
举个实际的例子:
content://com.example.project:200/folder/subfolder/etc
\---------/  \---------------------------/ \---/ \--------------------------/
scheme                 host               port        path
                \--------------------------------/

                          authority  

其他就不用在赘述,其他文章也会有介绍,下面主要介绍关于Uri的工具类:

1、android.content.ContentUris

    只含有三个方法:

public static Uri.Builder appendId(Uri.Builder builder, long id)     // Uri.Builder后面会介绍
public static Uri withAppendedId(Uri contentUri, long id)   // 这两个方法的效果相同
public static long parseId(Uri contentUri)   // 如果Uri中不包含id, return -1
2、android.net.Uri.Builder   // Builder源码
// Builder中有各种方法去支持拼出一个Uri, <span style="font-size:18px;">scheme</span>、<span style="font-size:18px;">authority</span>和path域都会有相应的方法去设置。

// Demo
Uri.Builder builder = uri.buildUpon();   // 通过一个现有的uri去生成一个builder,当然builder也有构造方法

// 方法
public Builder appendEncodedPath(String newSegment)
public Builder appendQueryParameter(String key, String value)    // key就是表的列名,


// Uri类的方法
public String getQueryParameter(String key)
public <span class="kw">public</span> <span class="kw">abstract</span> String getPathSegments().get(int)
public public abstract String getLastPathSegment()    // 得到path域的最后一个参数,可以用来获取最后的id

3、android.content.UriMatcher     // 见名知意 Uri匹配的类

public void addURI(String <span class="mark-6#0">authority</span>, String <span class="mark-7#0">path</span>, <span class="kw">int</span> <span class="mark-8#0">code</span>)
// demo 
matcher.addURI(ContactsContract.AUTHORITY, "contacts", CONTACTS);
matcher.addURI(ContactsContract.AUTHORITY, "contacts/#", CONTACTS_ID);

// 匹配Uri, 返回值为上面方法的addURI的方法中设定的第三个参数code
// 该方法多用于ContentProvider中,针对不同的Uri去查询不同的表或执行不同的动作
<pre><span class="kw">public</span> <span class="kw">int matcher</span>(Uri <span class="mark-24#0">uri</span>)<span class="kw"></span>


 



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值