Customized content provider

来源:互联网 发布:小型防身武器知乎 编辑:程序博客网 时间:2024/06/06 18:19
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.sqlite"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="18"        android:targetSdkVersion="18" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <provider            android:name="com.example.sqlite.BookStoreProvider"            android:authorities="com.example.sqlite.provider"           <span style="font-size:24px;"> <span style="color:#ff0000;">android:exported="true"</span></span> > <!--这个真不能省-->        </provider>    </application></manifest>


package com.example.sqlite;import com.example.sqlite.DBHelper.TABLE_Book;import com.example.sqlite.DBHelper.TABLE_Category;import android.content.ContentProvider;import android.content.ContentValues;import android.content.UriMatcher;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.net.Uri;public class BookStoreProvider extends ContentProvider {public static final String AUTORITY = "com.example.sqlite.provider";public static final int BOOK_DIR = 0;public static final int BOOK_ITEM = 1;;public static final int CATEGORY_DIR = 2;public static final int CATEGORY_ITEM = 3;private static UriMatcher matcher;private DBHelper helper;static {matcher = new UriMatcher(UriMatcher.NO_MATCH);matcher.addURI(AUTORITY, "book", BOOK_DIR);matcher.addURI(AUTORITY, "book/#", BOOK_ITEM);matcher.addURI(AUTORITY, "category", CATEGORY_DIR);matcher.addURI(AUTORITY, "category/#", CATEGORY_ITEM);}@Overridepublic boolean onCreate() {helper = new DBHelper(getContext(), null, 2);return true;}@Overridepublic Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {// TODO Auto-generated method stubSQLiteDatabase db = helper.getReadableDatabase();Cursor cursor = null;switch (matcher.match(uri)) {case BOOK_DIR:cursor = db.query(DBHelper.TABLE_Book.TABLE_NAME, projection, selection, selectionArgs, null, null,sortOrder);break;case BOOK_ITEM:String bookID = uri.getPathSegments().get(1);cursor = db.query(DBHelper.TABLE_Book.TABLE_NAME, projection, DBHelper.TABLE_Book.COL_ID + " = ?",new String[] { bookID }, null, null, null);break;case CATEGORY_DIR:cursor = db.query(DBHelper.TABLE_Category.TABLE_NAME, projection, selection, selectionArgs, null, null,sortOrder);break;case CATEGORY_ITEM:String cateID = uri.getPathSegments().get(1);cursor = db.query(DBHelper.TABLE_Category.TABLE_NAME, projection, DBHelper.TABLE_Category.COL_CateID+ " = ?", new String[] { cateID }, null, null, null);break;default:break;}return cursor;}@Overridepublic String getType(Uri uri) {// TODO Auto-generated method stubswitch (matcher.match(uri)) {case BOOK_DIR:return "vnd.android.cursor.dir/vnd.com.example.sqlite.provider.book";case BOOK_ITEM:return "vnd.android.cursor.item/vnd.com.example.sqlite.provider.book";case CATEGORY_DIR:return "vnd.android.cursor.dir/vnd.com.example.sqlite.provider.category";case CATEGORY_ITEM:return "vnd.android.cursor.item/vnd.com.example.sqlite.provider.category";}return null;}@Overridepublic Uri insert(Uri uri, ContentValues values) {// TODO Auto-generated method stubSQLiteDatabase db = helper.getWritableDatabase();Uri returnUri = null;long newID = -1;switch (matcher.match(uri)) {case BOOK_DIR:case BOOK_ITEM:newID = db.insert(DBHelper.TABLE_Book.TABLE_NAME, null, values);returnUri = Uri.parse("content://" + AUTORITY + "/Book/" + newID);break;case CATEGORY_DIR:case CATEGORY_ITEM:newID = db.insert(DBHelper.TABLE_Category.TABLE_NAME, null, values);returnUri = Uri.parse("content://" + AUTORITY + "/Category/" + newID);break;default:break;}return returnUri;}@Overridepublic int delete(Uri uri, String selection, String[] selectionArgs) {// TODO Auto-generated method stubSQLiteDatabase db = helper.getWritableDatabase();int id = 0;switch (matcher.match(uri)) {case BOOK_DIR:case BOOK_ITEM:id = db.delete(TABLE_Book.TABLE_NAME, selection, selectionArgs);break;case CATEGORY_DIR:case CATEGORY_ITEM:id = db.delete(TABLE_Category.TABLE_NAME, selection, selectionArgs);break;default:break;}return id;}@Overridepublic int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {// TODO Auto-generated method stubSQLiteDatabase db = helper.getWritableDatabase();int rowsAffected = 0;switch (matcher.match(uri)) {case BOOK_DIR:case BOOK_ITEM:rowsAffected = db.update(TABLE_Book.TABLE_NAME, values, selection, selectionArgs);break;case CATEGORY_DIR:case CATEGORY_ITEM:rowsAffected = db.update(TABLE_Category.TABLE_NAME, values, selection, selectionArgs);break;default:break;}return rowsAffected;}}


0 0