<provider android:name=".PersonContentProvider" android:authorities="cn.itcast.provides.personprovider"/>
package cn.itcast.db;import cn.itcast.service.DBOpenHelper;import android.content.ContentProvider;import android.content.ContentUris;import android.content.ContentValues;import android.content.UriMatcher;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.net.Uri;public class PersonContentProvider extends ContentProvider {private static final UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH);private static final int PERSONS = 1;private static final int PERSON = 2;private DBOpenHelper dbOpenHelper;static{sMatcher.addURI("cn.itcast.provides.personprovider", "person", PERSONS);sMatcher.addURI("cn.itcast.provides.personprovider", "person/#", PERSON);}//   content://cn.itcast.provides.personprovider/person@Overridepublic Uri insert(Uri uri, ContentValues values) {SQLiteDatabase db = dbOpenHelper.getWritableDatabase();switch (sMatcher.match(uri)) {case PERSONS:long rowid = db.insert("person", "name", values);getContext().getContentResolver().notifyChange(uri, null);return ContentUris.withAppendedId(uri, rowid);default:throw new IllegalArgumentException("Unknown Uri:"+ uri);}}//  content://cn.itcast.provides.personprovider/person 删除表中的所有记录//  content://cn.itcast.provides.personprovider/person/10 删除表中指定id的记录@Overridepublic int delete(Uri uri, String selection, String[] selectionArgs) {SQLiteDatabase db = dbOpenHelper.getWritableDatabase();int num = 0;switch (sMatcher.match(uri)) {case PERSONS:num = db.delete("person", selection, selectionArgs);break;case PERSON:long personid = ContentUris.parseId(uri);String where = "personid="+ personid;if(selection!=null && !"".equals(selection)){where = where + " and "+ selection;}num = db.delete("person", where, selectionArgs);break;default:throw new IllegalArgumentException("Unknown Uri:"+ uri);}getContext().getContentResolver().notifyChange(uri, null);return num;}@Overridepublic String getType(Uri uri) {// gif image/gif   text/plainswitch (sMatcher.match(uri)) {case PERSONS:return "vnd.android.cursor.dir/person";case PERSON:return "vnd.android.cursor.item/person";default:throw new IllegalArgumentException("Unknown Uri:"+ uri);}}@Overridepublic boolean onCreate() {this.dbOpenHelper = new DBOpenHelper(this.getContext());return true;}//  content://cn.itcast.provides.personprovider/person 获取表中的所有记录//  content://cn.itcast.provides.personprovider/person/10 获取表中指定id的记录@Overridepublic Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) {SQLiteDatabase db = dbOpenHelper.getReadableDatabase();switch (sMatcher.match(uri)) {case PERSONS:return db.query("person", projection, selection, selectionArgs, null, null, sortOrder);case PERSON:long personid = ContentUris.parseId(uri);String where = "personid="+ personid;if(selection!=null && !"".equals(selection)){where = where + " and "+ selection;}return db.query("person", projection, where, selectionArgs, null, null, sortOrder);default:throw new IllegalArgumentException("Unknown Uri:"+ uri);}}//  content://cn.itcast.provides.personprovider/person 更新表中的所有记录//  content://cn.itcast.provides.personprovider/person/10 更新表中指定id的记录@Overridepublic int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {SQLiteDatabase db = dbOpenHelper.getWritableDatabase();int num = 0;switch (sMatcher.match(uri)) {case PERSONS:num = db.update("person", values, selection, selectionArgs);break;case PERSON:long personid = ContentUris.parseId(uri);String where = "personid="+ personid;if(selection!=null && !"".equals(selection)){where = where + " and "+ selection;}num = db.update("person", values, where, selectionArgs);break;default:throw new IllegalArgumentException("Unknown Uri:"+ uri);}getContext().getContentResolver().notifyChange(uri, null);return num;}}


更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. android 开机启动服务
  2. android studio 生成 release aar
  3. Android(安卓)跨应用调用Activity及Servi
  4. Android中一个APP启动另一个APP并传递参
  5. 关于Android/java的复杂对象的深拷贝和浅
  6. Android 为Notification加上一个进度条
  7. Android 获取手机当前所在的经纬度
  8. Android电源管理,低电量报警
  9. android之HandlerThread类的实现
  10. Android 简单数据库(增删改查)