public class PersonDBProvider extends ContentProvider {    private PersonDBHelper mDbHelper;    //定义匹配工具,如果不匹配返回-1;    private static UriMatcher mMatcher = new UriMatcher(UriMatcher.NO_MATCH);    private static final String AUTHORITIES = "com.android.basic.provider.PersonDBProvider";    private static final int INSERT = 0;    private static final int DELETE = 1;    private static final int UPDATE = 2;    private static final int QUERY = 3;    private static Uri PERSONS_DB_URI = Uri.parse("content://" + AUTHORITIES);    private static final String TABLE = "person";    static{        mMatcher.addURI(AUTHORITIES, "insert", INSERT);        mMatcher.addURI(AUTHORITIES, "delete", DELETE);        mMatcher.addURI(AUTHORITIES, "update", UPDATE);        mMatcher.addURI(AUTHORITIES, "query", QUERY);    }    @Override    public boolean onCreate() {        mDbHelper = new PersonDBHelper(getContext());        return false;    }    @Override    public Cursor query(Uri uri, String[] projection, String selection,            String[] selectionArgs, String sortOrder) {        if (mMatcher.match(uri)==QUERY) {            SQLiteDatabase db = mDbHelper.getReadableDatabase();            return db.query(TABLE, projection, selection, selectionArgs, null, null, sortOrder);        } else {            throw new IllegalArgumentException("路径错误!");        }    }    @Override    public String getType(Uri uri) {        // TODO Auto-generated method stub        return null;    }    @Override    public Uri insert(Uri uri, ContentValues values) {        if (mMatcher.match(uri) == INSERT) {            Logger.i("tag", "uri==" + uri.toString());            Logger.i("tag", "getAuthority==" + uri.getAuthority());            SQLiteDatabase db = mDbHelper.getWritableDatabase();            long index = db.insert(TABLE, null, values);            getContext().getContentResolver().notifyChange(PERSONS_DB_URI, null);            return Uri.withAppendedPath(uri, index+"");        }else {            throw new IllegalArgumentException("路径错误!");        }    }    @Override    public int delete(Uri uri, String selection, String[] selectionArgs) {        if (mMatcher.match(uri) == DELETE) {            SQLiteDatabase db = mDbHelper.getWritableDatabase();            getContext().getContentResolver().notifyChange(PERSONS_DB_URI, null);            return db.delete(TABLE, selection, selectionArgs);        }else {            throw new IllegalArgumentException("路径错误!");        }    }    @Override    public int update(Uri uri, ContentValues values, String selection,            String[] selectionArgs) {        if (mMatcher.match(uri) == UPDATE) {            SQLiteDatabase db = mDbHelper.getWritableDatabase();            getContext().getContentResolver().notifyChange(PERSONS_DB_URI, null);            return db.update(TABLE, values, selection, selectionArgs);        }else {            throw new IllegalArgumentException("路径错误!");        }    }}

实现

public class ProviderActivity extends Activity {    private static final Uri QUERY_URI = Uri.parse("content://com.android.basic.provider.PersonDBProvider/query");    private static final Uri ADD_URI = Uri.parse("content://com.android.basic.provider.PersonDBProvider/add");    private static final Uri DELETE_URI = Uri.parse("content://com.android.basic.provider.PersonDBProvider/delete");    private static final Uri UPDATE_URI = Uri.parse("content://com.android.basic.provider.PersonDBProvider/update");    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_provider);    }    public void query(View view){        Cursor cursor = getContentResolver().query(QUERY_URI, null, null, null, null);        while(cursor.moveToNext()){            String name = cursor.getString(cursor.getColumnIndex("name"));            String number = cursor.getString(cursor.getColumnIndex("number"));            Logger.i("tag", "name==" + name);            Logger.i("tag", "number==" + number);        }    }    public void add(View view){        for (int i = 0; i < 10; i++) {            ContentValues values = new ContentValues();            values.put("name", "tom"+i);            values.put("number", "20"+i);            Uri uri = getContentResolver().insert(ADD_URI, values);        }    }    public void delete(View view){        ContentValues values = new ContentValues();        values.put("name", "tom");        values.put("number", "20");        int delete = getContentResolver().delete(DELETE_URI, "_id = ?", new String[]{"1"});        Logger.i("tag", "delete==" + delete);    }    public void update(View view){        ContentValues values = new ContentValues();        values.put("name", "jack");        values.put("number", "50");        getContentResolver().update(UPDATE_URI, values, "_id = ?", new String[]{"1"});    }}

更多相关文章

  1. android 读取指定路径数据库文件
  2. android获取指定路径下目录文件
  3. android 加载第三方库
  4. Android拍照、录像、录音代码范例
  5. Android(安卓)7.0版本升级解析包错误
  6. Android路径大全
  7. 15、android 常用文件路径备忘
  8. android studio 56 下载网络歌曲 代码
  9. android service

随机推荐

  1. 两分钟彻底让你明白Android中onIntercept
  2. Android动态加载jar/dex
  3. 【Android(安卓)应用开发】Android资源文
  4. Android的一些常用命令提示符(cmd)指令
  5. 【Mark】Android(安卓)TextView属性详解
  6. Android中使用SAX方式解析XML文件
  7. Android消息处理系统原理简要概述
  8. Android介绍
  9. android-studio使用cmake编译ffmpeg实践
  10. Google Android操作系统内核编译图文教程