Androidx学习笔记(81)--- 内容提供者(ContentProvider)
2016-02-24 20:13
656 查看
内容提供者
应用的数据库是不允许其他应用访问的内容提供者的作用就是让别的应用访问到你的数据库
内容提供者的作用:把私有数据暴露给其他应用,通常,是把私有数据库的数据暴露给其他应用自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查数据库的代码,举例增方法
@Override public Uri insert(Uri uri, ContentValues values) { db.insert("person", null, values); return uri; }在清单文件中定义内容提供者的标签,注意必须要有authorities属性,这是内容提供者的主机名,功能类似地址
<provider android:name="com.exp.contentprovider.PersonProvider" android:authorities="com.exp.person" android:exported="true" ></provider>创建一个其他应用,访问自定义的内容提供者,实现对数据库的插入操作
public void click(View v){ //得到内容分解器对象 ContentResolver cr = getContentResolver(); ContentValues cv = new ContentValues(); cv.put("name", "小方"); cv.put("phone", 138856); cv.put("money", 3000); //url:内容提供者的主机名 cr.insert(Uri.parse("content://com.exp.person"), cv); }
UriMatcher
用于判断一条uri跟指定的多条uri中的哪条匹配添加匹配规则//指定多条uri um.addURI("com.exp.person", "person", PERSON_CODE); um.addURI("com.exp.person", "company", COMPANY_CODE); //#号可以代表任意数字 um.addURI("com.exp.person", "person/#", QUERY_ONE_PERSON_CODE);通过Uri匹配器可以实现操作不同的表
@Override public Uri insert(Uri uri, ContentValues values) { if(um.match(uri) == PERSON_CODE){ db.insert("person", null, values); } else if(um.match(uri) == COMPANY_CODE){ db.insert("company", null, values); } else{ throw new IllegalArgumentException(); } return uri; }如果路径中带有数字,把数字提取出来的api
int id = (int) ContentUris.parseId(uri);
相关文章推荐
- Androidx学习笔记(80)--- 摄像拍照
- Androidx学习笔记(79)--- 视频播放器二(VideoView等)
- Androidx学习笔记(78)--- 视频播放器(MediaPlayer+SurfaceView)
- Androidx学习笔记(77)--- 音乐播放器2
- Androidx学习笔记(76)--- 撕衣服
- Androidx学习笔记(75)--- 画画板
- Androidx学习笔记(74)--- 对图片进行特效处理
- Android卡片式布局的简单实现方法
- 使用Toolbar + DrawerLayout快速实现菜单侧滑
- Androidx学习笔记(73)--- 在内存中创建图片的副本
- Android的IPC机制(三)——Binder连接池
- TooBar的使用
- Androidx学习笔记(72)--- 加载大图片
- Androidx学习笔记(71)--- 需要支付的应用(调用远程的服务)
- android的进阶findViewById
- 如何解决Android 5.0中出现的警告: Service Intent must be explicit:
- startActivity构成的Activity链中间断掉会如何?
- Android的消息循环机制 Looper Handler类分析
- Android样式的开发:Style篇
- Androidx学习笔记(70)--- 进程优先级