Android ContentProvier
ADB 调试
通过adb调试应该是最简单的场景。
adb shell content query --uri content://com.xxx.xxx.xxx/xxx/123
下面是常见操作的参考
adb shell content <操作> --uri <ContentProvider的Uri> [参数]
列出设备上所有可用的 ContentProvider:
adb shell dumpsys package providers
输出中包含所有 ContentProvider 的 authority、权限、进程等信息,可用于确认目标 Uri 是否正确。
过滤特定应用的 ContentProvider:
adb shell dumpsys package providers | grep "com.example.channelprovider"查询数据(query)
通过Uri 中携带路径参数
adb shell content query --uri content://com.example.provider/channel/100 # 100 是路径参数获取所有数据:
adb shell content query --uri content://com.example.channelprovider/channel
指定查询列(--projection):
adb shell content query --uri content://com.example.channelprovider/channel \--projection "_id,channel_name,channel_num"
添加查询条件(--where):
adb shell content query --uri content://com.example.channelprovider/channel \--projection "channel_name,channel_num" \--where "channel_num > 50"
按条件排序(--sort):
adb shell content query --uri content://com.example.channelprovider/channel \--sort "channel_num ASC"
2. 插入数据(insert)
通过 --bind 指定字段值(格式:字段名:类型:值,类型可选 s字符串 /i整数 /l长整数等):
adb shell content insert --uri content://com.example.channelprovider/channel \--bind "channel_name:s:测试频道" \--bind "channel_num:i:100" \--bind "intent:s:intent://test#Intent;end"
3. 更新数据(update)
adb shell content update --uri content://com.example.channelprovider/channel \--bind "channel_name:s:更新后的测试频道" \--where "channel_num = 100"
示例:更新带参数的数据
将 channel_num=20 的频道名称改为 “NBA 篮球频道”,携带参数:
bash
adb shell content update \--uri content://com.example.channelprovider/channel \--bind "channel_name:s:NBA篮球频道" \ # 携带参数:要更新的字段值--where "channel_num = 20" # 携带参数:更新条件4. 删除数据(delete)
adb shell content delete --uri content://com.example.channelprovider/channel \--where "channel_num = 100"示例:删除带参数的数据
删除 channel_num < 10 的频道,携带条件参数:
adb shell content delete \--uri content://com.example.channelprovider/channel \--where "channel_num < 10" # 携带参数:删除条件