Android 开发 - UriMatcher(一个 URI 分类器)

UriMatcher

1、基本介绍

UriMatcher 是一个 URI 分类器,它能根据传给它的 URI,快速判断这个 URI 属于哪一类,然后返回一个对应的 code

2、基本使用
java 复制代码
String authority = "com.my.test";

UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);

uriMatcher.addURI(authority, "user", 1);
uriMatcher.addURI(authority, "user/#", 2);
uriMatcher.addURI(authority, "user/*", 3);

int result1 = uriMatcher.match(Uri.parse("content://com.my.test/user"));
int result2 = uriMatcher.match(Uri.parse("content://com.my.test/user/101"));
int result3 = uriMatcher.match(Uri.parse("content://com.my.test/user/tom"));
int result4 = uriMatcher.match(Uri.parse("content://com.my.test"));
int result5 = uriMatcher.match(Uri.parse("test content"));
int result6 = uriMatcher.match(Uri.parse("content://"));

System.out.println("result1: " + result1);
System.out.println("result2: " + result2);
System.out.println("result3: " + result3);
System.out.println("result4: " + result4);
System.out.println("result5: " + result5);
System.out.println("result6: " + result6);
复制代码
# 输出结果

result1: 1
result2: 2
result3: 3
result4: -1
result5: -1
result6: -1
java 复制代码
String authority = "com.my.test";

UriMatcher uriMatcher = new UriMatcher(100);

uriMatcher.addURI(authority, "user", 1);
uriMatcher.addURI(authority, "user/#", 2);
uriMatcher.addURI(authority, "user/*", 3);

int result1 = uriMatcher.match(Uri.parse("content://com.my.test/user"));
int result2 = uriMatcher.match(Uri.parse("content://com.my.test/user/101"));
int result3 = uriMatcher.match(Uri.parse("content://com.my.test/user/tom"));
int result4 = uriMatcher.match(Uri.parse("content://com.my.test"));
int result5 = uriMatcher.match(Uri.parse("test content"));
int result6 = uriMatcher.match(Uri.parse("content://"));

System.out.println("result1: " + result1);
System.out.println("result2: " + result2);
System.out.println("result3: " + result3);
System.out.println("result4: " + result4);
System.out.println("result5: " + result5);
System.out.println("result6: " + result6);
复制代码
# 输出结果

result1: 1
result2: 2
result3: 3
result4: -1
result5: -1
result6: -1
相关推荐
头发还在的女程序员6 小时前
医院陪诊管理系统怎么选择?——2026 年选型避坑与架构参考
java·开发语言·陪诊系统·陪诊app·医院陪诊陪护
CodeStats6 小时前
【Spring事务】Spring事务注解 @Transactional 完整体系:从 MySQL 隔离级别到 MyBatis 原理详解
java·spring·mybatis·事务·transactional
xingxiliang7 小时前
深入浅出 Android CTS 视频测试:从环境搭建、用例设计到底层通信原理
android·音视频
我命由我123457 小时前
Android 开发问题:为 PDFView 设置一个带有黑色边框的背景 drawable,但边框没有生效
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
雨白9 小时前
深入理解 Kotlin 协程 (八):拾遗补阙,探秘官方框架的调度细节与取消闭环
android·kotlin
都叫我大帅哥9 小时前
从Python到Java:为什么企业级Agent最终会选择Java?
java·ai编程
wanderist.9 小时前
Lambda表达式在算法竞赛中的应用
java·开发语言·算法
海天鹰10 小时前
PHP上传文件
android·开发语言·php
腻害兔11 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:IM 即时通讯模块,一个被低估的「全功能聊天系统」
java·前端·vue.js·产品经理·ai编程
心念枕惊11 小时前
.NET CORE 授权进阶-角色、策略与动态权限实现
java·前端·.netcore