«

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

时间:2024-3-2 18:43     作者:韩俊     分类: Android


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);










标签: android

热门推荐