您的位置:首页 > 编程语言 > PHP开发

四大组件之------------内容提供者ContentProvider

2013-01-25 13:31 525 查看
1.内容提供者(ContentProvider)

作用:应用程序中的数据对外进行共享,外界可以对该应用进行增删改查。如:通讯录

内容提供者的创建:

<1>.必须在应用程序的根包中创建一个类,该类继承ContentProvider

<2>配置AndroidManifest.xml文件,在应用节点下增加Provider节点

Name:类名 Authorities:唯一标识,表示内容提供者的唯一性

2.内容提供者用到的工具:

UriMatcher类:对路径进行判断。

UriMatcher MATCHER=new UriMatcher(UriMatcher.NO_MATCH);

常用方法:

UriMatcher.match(Uri)判断是否合法。

UriMatcher.addURI(“”)增加合法的路径。

ContentUris类:对路径进行修改。(静态类)

对路径中的参数进行提取:ContentUris.parseID(Uri)

增加字段:ContentUris.withAppendedId(uri, pid);

3.对某个接口内容提供者对外进行更新通知:

This.getContext().getContentResolver().notifyChange(uri,null)

4.使用内容提供者的方法:

<1>.构造路径<2>取得ContentResolver对象<3>调用Resolver的方法进行访问

Uri uri=Uri.parse("content://com.example.providers.personprovider/person");

ContentResolver Resolver=this.getContext().getContentResolver();

Resolver.insert(uri,values);

5.获得内容提供者的变化:

<1>构造路径,<2>取得ContentResolver对象<3>调用ContentResolver的registerContentObserver(uri,true,new PersonContentObserver(new Handler()))方法注册变化通知

private class PersonContentObserver extends ContentObserver{

public PersonContentObserver(Handler handler) {

super(handler);

}

public void onChange(boolean selfChange) {//当得到通知后进行查询最新数据

Uri uri=Uri.parse("content://com.example.providers.personprovider/person/query");

//select * from person order by personid desc limit 1

ContentResolver resolver=MainActivity.this.getContentResolver();

Cursor cursor=resolver.query(uri, null, null, null, "personid desc limit 1");

if(cursor.moveToFirst()){

Log.i("PersonContent", cursor.getString(cursor.getColumnIndex("name")));

}

else

Log.i("PersonContent", "错误");

}

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