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

android数据存储读取6:contentProvider的使用(提供自己应用的数据)

2015-06-11 11:10 555 查看
contentprovider 可以提供应用的数据供其它的应用使用。同时也可以利用它访问其它的应用。比如访问手机短信、手机Music、联系人等等。优点在于提供了公共的、统一的数据访问接口。

也就是说 别的应用调用 固定的都有增删改查方法

ContentProvider的使用大致可以分为下面几个部分:

首先我们需要定义一个类继承ContentProvider

public class PersonContentProvider
extends
ContentProvider
(1)在类中定义一个静态代码块,实现UIR等的初始化设置

static {

uriMatcher =
new UriMatcher(UriMatcher.NO_MATCH);

// 添加一些uri(分机号)

uriMatcher.addURI(AUTHORITY,
"person/insert",
PRESON_INSERT_CODE);

}
"person/insert" 这个person名字一般是数据库的名字,当然用其它名字也可以。后面的insert一般取方法名字。

(2)实现insert方法 (首先要通过URI匹配权限是否正确)然欧才能对数据库进行操作

@Override

public Uri insert(Uri uri, ContentValues values) {

switch (uriMatcher.match(uri)) {

case
PRESON_INSERT_CODE:

SQLiteDatabase db =
mOpenHelper.getWritableDatabase();

if(db.isOpen()) {

long id = db.insert("person",
null, values);

db.close();

return ContentUris.withAppendedId(uri, id);

}

break;

default:

throw
new IllegalArgumentException("uri不匹配: " + uri);

}

return
null;

}
(3)manifester中注册使用权限

<provider

android:name=".providers.PersonContentProvider"

android:authorities="包名.PersonContentProvider"

android:readPermission="aa.bb.cc.read"

android:writePermission="aa.bb.cc.write"
>

</provider>

第三方应用使用数据的时候:

(1)manifester中权限声明

<uses-permission
android:name="aa.bb.cc.read"/>

<uses-permission
android:name="aa.bb.cc.write"/>
(2)创建内容提供者对象。调用公共Insert方法,插入对象。根据URI查找对象所在的位置

Uri uri = Uri.parse("content://包名.PersonContentProvider/person/insert");

// 内容提供者访问对象

ContentResolver resolver = getContext().getContentResolver();

ContentValues values =
new ContentValues();

values.put("name",
"fengjie");

values.put("age", 90);

uri = resolver.insert(uri, values);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: