Android 内容提供者ContentProvider
发布日期:2021-06-30 22:35:21
浏览次数:2
分类:技术文章
本文共 4862 字,大约阅读时间需要 16 分钟。
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"}); }}
转载地址:https://lovoo.blog.csdn.net/article/details/51255298 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月22日 04时44分43秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Vue 之 axios 篇
2019-04-30
vue 之动画
2019-04-30
js的基础语法
2019-04-30
vue使用iconfont
2019-04-30
linux 查看文件夹权限
2019-04-30
linux tar 备份
2019-04-30
ubuntu中配置任意应用的快捷键
2019-04-30
ln 命令 硬链接
2019-04-30
使用鼠标中键在vim下赋值文本到其它编辑器
2019-04-30
chkconfig使用和级别介绍
2019-04-30
snort 笔记1 ----- 3种模式简介
2019-04-30
ubuntu 快捷键
2019-04-30
linux 根目录下文件夹分析
2019-04-30
ubuntu tar备份
2019-04-30
My notes about backup to ubuntu
2019-04-30
linux 查看分区和文件大小
2019-04-30
IP TCP UDP 结构
2019-04-30
Not using PCAP_FRAMES 解释(snort中)
2019-04-30
数字信号处理——FIR滤波器设计
2019-04-30
技术转管理?这些“坑”你要绕道走
2019-04-30