package com.example.weishu.contentprovider_management; import android.content.ContentProvider; import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteQueryBuilder; import android.net.Uri; import android.support.annotation.NonNull; import android.support.annotation.Nullable; /** * @author weishu * @date 16/7/8. */ @SuppressWarnings("ALL") public class TestContentProvider extends ContentProvider { public static final String AUTHORITY = "com.example.weishu.testcontentprovider.TestContentProvider"; public static final Uri URI = Uri.parse("content://" + AUTHORITY); public static final String NAME = "name"; private static final String TABLE_NAME = "person"; private TestDataBase mDb; @Override public boolean onCreate() { mDb = new TestDataBase(getContext()); return true; } @Nullable @Override public Cursor query(@NonNull Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); SQLiteDatabase db = mDb.getReadableDatabase(); qb.setTables(TABLE_NAME); Cursor c = qb.query(db, projection, selection, null, null, null, sortOrder); c.setNotificationUri(getContext().getContentResolver(), uri); return c; } @Nullable @Override public String getType(Uri uri) { return null; } @Nullable @Override public Uri insert(Uri uri, ContentValues values) { SQLiteDatabase sqlDB = mDb.getWritableDatabase(); long rowId = sqlDB.insert(TABLE_NAME, "", values); if (rowId > 0) { Uri rowUri = ContentUris.appendId(URI.buildUpon(), rowId).build(); getContext().getContentResolver().notifyChange(rowUri, null); return rowUri; } throw new SQLException("Failed to insert row into " + uri); } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { return 0; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { return 0; } private static class TestDataBase extends SQLiteOpenHelper { private static int VERSION = 1; private static final String DB_NAME = "persons.db"; TestDataBase(Context context) { super(context, DB_NAME, null, VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("Create table " + TABLE_NAME + "( _id INTEGER PRIMARY KEY AUTOINCREMENT, " + NAME + ");"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } } }