您的位置:首页 > 移动开发 > Android开发

Android 四大组件之一 ContentProvider

2014-03-18 23:53 381 查看
学习自:/article/1360752.html

ContentProvider概述:

Android四大组件之一,用于对应用程序中的数据的共享和操作,我们通过ContentProvider可以

对Android中的音频,视频,图片,联系人等 进行增删改查操作。

个人对ContentProvider的见解:

Android的数据存储方式总共有五种,Shared Preferences、网络存储、文件存储、外储存储、SQLite。

每个程序存储数据可能用到其中的一种。假如,我要对Android中的联系人进行操作,此时,我不知道

Android中联系人是用那种方式存储的。这就是个问题。 那么ContentProvider就能满足这个需求,

一个类继承了ContentProvider方法,就会重写此类的增删改查方法,而这些方法在每个程序内部编写。

所以就不会存在这一问题。要调用数据,直接操作ContentProvider就可以了。

如何实现ContentProvider

1.理解Uri Uri:通用资源标识符



A:前缀表明数据受控于一个内容提供者。它从不修改,也就是schema

B:是指在AndroidMainfest.xml中我们注册的provider中的android:authorities属性所对应的

C:具体操作于哪个条目

D:具体指定到哪个条目下的哪条记录

2.UriMatcher 用于uri的注册和匹配:

实例化:UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH);

方法:1.sMatcher.addURI(“com.jiahui.provider.myprovider”, “person”, 1);//匹配此uri,如果匹配成功则返回最后一个参数1

sMatcher.addURI(“com.jiahui.provider.myprovider”, “person/#”, 2);//匹配此uri,如果匹配成功则返回最后一个参数2

2.sMatcher.match(uri); 此方法会返回已经加入的addURI,比如上面两个,如果没有就会返回-1

3.ContentUris 用于在Uri后面追加一个ID或者解析出传入的Uri所带上的ID值

方法:1.public static long parseId (Uri contentUri) //从路径中获取ID部分

2.public static Uri withAppendedId (Uri contentUri, long id) //用于为路径加上ID部分

4.ContentResolver类:用于操作ContentProvider类

增:Uri url = Uri.parse("content://com.jiahui.provider.myprovider/person"); 、

ContentValues values = new ContentValues();

values.put("name", edtname.getText().toString());

values.put("age", edtage.getText().toString());

Uri result = this.getContentResolver().insert(url, values);

if (ContentUris.parseId(result)>0) {

sysou("添加成功");

}

删:Uri uri = Uri.parse(“content://com.jiahui.provider.myprovider/person/2”);

int result = contentResolver.delete(uri, null, null);

if (result >= 1) {

sysou("删除成功");

}

改:Uri uri = Uri.parse("content://com.jiahui.provider.myprovider/person/3");

ContentValues values = new ContentValues();

values.put("name", edt_item_name.getText().toString());

values.put("age", Integer.parseInt(edt_item_age.getText().toString()));

int result = contentResolver.update(uri, values, null, null);

if (result >= 1) {

sysou("修改成功");

}

查:Uri url = Uri.parse("content://com.jiahui.provider.myprovider/person");

Cursor cursor = context.getContentResolver().query(url, new String[] { "_id", "name", "age" }, null, null, "_id");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: