外观
ContentProvider 如何实现跨应用数据共享?其 URI 匹配机制是怎样的?
标准回答
ContentProvider 暴露 content://authority/path 形式的 URI;客户端通过 ContentResolver 的 query/insert/update/delete 调用,系统按 authority 找到 Provider。Provider 可用 UriMatcher 将路径模式映射到业务操作,其中 # 匹配数字段、* 匹配文本段,并独立执行权限校验。
通俗例子
content://example/notes/7 表示第 7 条笔记;Provider 用 URI 匹配规则判断操作哪张表或哪个对象,再执行查询。
深入解释
**URI 对应什么:**例如 content://某个authority/devices/17,authority 让系统找到 Provider,后面的路径与 ID 由 Provider 解释并映射到具体查询或操作。
**调用是否允许由谁决定:**ContentResolver 发起访问,Provider 结合声明权限和自身检查决定是否提供数据。URI 是数据地址,不是无条件可访问的凭证。
易混淆点
ContentProvider 不等于数据库,它可以封装文件或其他数据来源。
内容来源
- Android · AI Agent 知识手册 · 原条目
7.4.1