Android ContentProvider
16lz
2021-01-23
<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;}}
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer