创建Content Provider类,注册Manifest

Content Provider 和Activity是四大主要控件,之间有很多相似,同样都放在项目包或者子包下。

必须进行URI匹配,确定合法的URI输入

    /*** 使用UriMatcher类 进行URI匹配* UriMatcher.NO_MATCH 指的是不匹配时对应的code* PERSONS 和 PERSON 是 合法的URI 对应的code*/private static final UriMatcher MATCHER = new UriMatcher(UriMatcher.NO_MATCH);private static final int PERSONS = 1;private static final int PERSON = 2;static{MATCHER.addURI("com.njulya.providers.personprovider", "person", PERSONS);MATCHER.addURI("com.njulya.providers.personprovider", "person/#", PERSON);}

自定义对应的方法

    /*** 重写insert方法* 两个关于URI的类 Uri 和 ContentUris * 对应的方法 uri.parse("uri") 和 ContentUris.withAppendedId(uri, rowid);*/@Overridepublic Uri insert(Uri uri, ContentValues values) {SQLiteDatabase db = helper.getWritableDatabase();switch (MATCHER.match(uri)) {case PERSONS:long rowid = db.insert("person", null, values);Uri insertUri = ContentUris.withAppendedId(uri, rowid);return insertUri;default:throw new IllegalArgumentException("URI is Unkown");}}

删除delete方法

    /*** 重写delete方法* 关键是如何通过 URI 和 外部提供的 seletion条件 确定删除的参数*/@Overridepublic int delete(Uri uri, String selection, String[] selectionArgs) {SQLiteDatabase db = helper.getWritableDatabase();switch (MATCHER.match(uri)) {case PERSONS:return db.delete("person", selection, selectionArgs);case PERSON:long rowid = ContentUris.parseId(uri);String where = "_id="+rowid;//内部解析的条件if(selection != null && !"".equals(selection))//外面的条件不是null,且不为空where += "and" + selection;//加上外面的条件return  db.delete("person", where, selectionArgs);default:throw new IllegalArgumentException("URI is Unkown");}}

转载于:https://www.cnblogs.com/lya-nju/p/4221239.html

传播智客学习笔记--L20 Content Provider相关推荐

  1. 传播智客学习笔记--L25 添加多个Activity

    软件界面 Intent作用:激活组件 + 附带数据 setClassName 可以打开其他项目中的Activity 传递数据 Bundle 相对于一个Map,不过提供了常用数据类型的put方法 得到数 ...

  2. 传播智客学习笔记--L24 网页源码查看和添加滚动条

    添加滚动条 1 <ScrollView 2 android:layout_width="wrap_content" 3 android:layout_height=" ...

  3. 传播智客学习笔记--L26 深入认识Intent

    显示Intent和隐示Intent 没有明确指定组件名称的Intent叫隐示Intent 关键是隐示Intent的匹配规则 隐示Intent的匹配规则 Activity中的Intent filter中 ...

  4. 传播智客学习笔记--L6电话拔号器

    激活电话拨打的Activity <uses-permission android:name="android.permission.CALL_PHONE"/> telI ...

  5. 传播智客学习笔记--L37 BroadcasReceiver和短信拦截

    BroadcastReceiver是干什么的? 是观察者模式机制的一个实现 broadcastReceiver平时出于等待状态,直到其订阅的事件被触发 与Activity,ContentProvide ...

  6. 传播智客学习笔记--L23 从网络获取图片

    如何通过字节数据得到图片 protected void showImg() {String path = editText.getText().toString();byte[] data = Ima ...

  7. 传播智客学习笔记--L10Junit单元测试

    配置单元测试的环境 <uses-library android:name="android.test.runnre" <instrumentation android: ...

  8. 传播智客学习笔记--L8短信通知

    通知用户的方式 Toast通知 第二个参数提供要选择的文字 第三个参数TOAST_SHORT,TOAST_LONG 必须调用show方法才可以显示 发送短信 实现代码 如何查找某些功能所需的权限 转载 ...

  9. 传播智客学习笔记--L27 Activity生命周期

    将Activity设置为对话框样式 生命周期示意图 Activity 四种启动模式 转载于:https://www.cnblogs.com/lya-nju/p/4231026.html

最新文章

  1. matepad和鸿蒙,爆料称华为MatePad 2系列平板有三个版本:预装鸿蒙OS
  2. linux 安装tinyxml,使用TinyXml
  3. Linux下计划任务和标准化工作流程
  4. 代码变油画,精细到毛发,这个前端小姐姐只用HTML+CSS,让美术设计也惊叹丨GitHub热榜...
  5. 使用LinkedBlockingQueue来实现生产者消费者的例子
  6. python编程基础题答案_大学moocPython编程基础题目及答案
  7. oracle12c 不添加host,Oracle12c部署,允许远程访问-Go语言中文社区
  8. csgo 机器人模式_分享一个休闲模式机器人Bug
  9. 赋值运算符(AssignmentOperator)
  10. vue 插件 滑块验证_Vue插件之滑动验证码
  11. ofstream 的中文目录问题
  12. IT职场人生系列之十:创业观
  13. 防止用户直接访问url
  14. Spring支持的常用数据库事务传播属性和事务隔离级别
  15. html 视频类插件,科技常识:HTML5视频播放插件 video.js介绍
  16. 再见丑陋的 SwaggerUI,这款开源的API文档生成神器界面更炫酷,逼格更高
  17. linux root 拒绝访问权限,Linux下禁止通过root权限访问
  18. Visual Studio Code底部状态栏的隐藏及复原
  19. string刷题集合
  20. 警察抓到ABCD四个小偷C语言,警察抓小偷游戏作文450字

热门文章

  1. 深入理解机器学习——k近邻(kNN,k-Nearest Neighbor)算法:基础知识
  2. QPen方法功能(QT5.12)
  3. gitbash 添加subl命令
  4. 苹果音乐下载转换器:TunePat Apple Music Converter for Mac
  5. x32 段描述符解析及转换脚本
  6. 神策数据发布汽车行业版,加速车企卓越数字化体验
  7. 南京大学计算机陈立庚,《青春的征途》第二季《青春的力量》升级回归 追溯科技的力量...
  8. 笔记本自动更新win11系统过后触控板不能使用了
  9. etal中间有空格吗_学海无涯,四大皆空——SCI论文中的空格
  10. 发票识别+发票验真API:告别手动录入