内容提供器与跨进程数据访问
ContentProvider 的定位
ContentProvider 是 Android 中跨进程共享结构化数据的标准机制。通讯录、短信、媒体库、日历等系统数据都通过 Provider 暴露。App 之间也可以通过它安全地共享数据。
URI 权限机制
每个 Provider 有一个 authority(类似域名)和一个 path(类似路径)。访问格式:content://authority/path。
Provider 可以声明 readPermission 和 writePermission 来限制访问。也可以通过 Android 11+ 的 android:grantUriPermissions 机制做细粒度授权。
LibChecker 中的 Provider 分析
ContentProvider Tab 展示:
- Provider 完整类名
- authority
- readPermission / writePermission
- exported 属性
- 是否声明 grantUriPermissions
从 v2.5 开始,权限详情页会展示 permission provider 的关系链,帮助理解权限声明和数据暴露之间的联系。
安全关注点
- exported=true 无权限保护:任何 App 都能读写这个 Provider 的数据
- authority 命名:应该使用反向域名格式,如
com.example.app.provider;不规范的命名可能暗示第三方库提供的默认实现 - 共享 UID 场景:使用相同 sharedUserId 的 App 之间可以自由访问彼此的 Provider
元数据与 Intent
除了四大组件,LibChecker 还展示 AndroidManifest 中的 <meta-data> 条目。这些键值对常用于:
- 声明第三方 SDK 的配置信息
- 声明自定义 Intent Filter 的扩展信息
- 记录应用的编译版本标记