ContentProvider 实现

来源:互联网 发布:雷尼绍测头编程 编辑:程序博客网 时间:2024/06/05 14:58


1.定义数据库的元数据

public class BookProviderMetaData {    public static final String AUTHORITY = "com.androidbook.provider.BookProvider";        public static final String DATABASE_NAME = "book.db";    public static final int DATABASE_VERSION = 1;    public static final String BOOKS_TABLE_NAME = "books";        private BookProviderMetaData() {}    //inner class describing columns and their types    public static final class BookTableMetaData implements BaseColumns     {        private BookTableMetaData() {}        public static final String TABLE_NAME = "books";        //uri and mime type definitions        public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/books");        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.androidbook.book";        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.androidbook.book";        public static final String DEFAULT_SORT_ORDER = "modified DESC";                //Additional Columns start here.        //string type        public static final String BOOK_NAME = "name";        //string type        public static final String BOOK_ISBN = "isbn";        //string type        public static final String BOOK_AUTHOR = "author";        //Integer from System.currentTimeMillis()        public static final String CREATED_DATE = "created";        //Integer from System.currentTimeMillis()        public static final String MODIFIED_DATE = "modified";    }}

 2.继承contentProvider ,重写重要的几个方法

  

package com.test.android.skin.main;import java.util.List;import android.content.ContentProvider;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.net.Uri;import android.util.Log;public class Provider extends ContentProvider{private SQLiteOpenHelper helper;@Overridepublic boolean onCreate() {helper = new SqLHelper(this.getContext());return false;}@Overridepublic Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) {List<String> paths = uri.getPathSegments();String tableName = paths.get(0);SQLiteDatabase db = helper.getReadableDatabase();return db.query(tableName, null, null, null, null, null, null);}@Overridepublic String getType(Uri uri) {return null;}@Overridepublic Uri insert(Uri uri, ContentValues values) {List<String> paths = uri.getPathSegments();String tableName = paths.get(0);Log.d("Tag",tableName + ":::"+uri.toString());SQLiteDatabase db = helper.getWritableDatabase();db.insert(tableName, null, values);return uri;}@Overridepublic int delete(Uri uri, String selection, String[] selectionArgs) {return 0;}@Overridepublic int update(Uri uri, ContentValues values, String selection,String[] selectionArgs) {return 0;}}

getType 需要返回mime类型的东西,根据uri的类型

 

调用Uri的内容不必多说

原创粉丝点击