首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android共享数据ContentProvider的应用

2012-08-25 
Android共享数据ContentProvider的使用ContentProvider数据共享1.首先在AndroidManifest.xml文件中添加对

Android共享数据ContentProvider的使用

ContentProvider数据共享

1.首先在AndroidManifest.xml文件中添加对外暴露的数据共享接口Content

?ContentProvider采用了authorities(主机名/域名)对它进行唯一标识,authorities 就是他的域名

?

2.Url解析
content://com.yaku.ContentProvider.userprovider/user/2
【content://】 Android定义的内容提供都的Schema
【com.yaku.ContentProvider.userprovider】? 主机名或者authorities
【user】? 路径
【2】 ID

?

示例代码:

数据结构User.java:

?

数据库操作DBOpenHelper.java:

?

单元测试类(在另一个应用中):

?

package com.yaku.ContentProvider;import android.content.ContentResolver;import android.content.ContentValues;import android.database.Cursor;import android.net.Uri;import android.test.AndroidTestCase;import android.util.Log;/** * 监听数据变化 */public class OtherContentProviderTest extends AndroidTestCase {private static final String TAG = "OtherContentProvider";        @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                Uri insertUri = Uri.parse("content://com.yaku.ContentProvider.userprovider/user");        ContentResolver contentResolver = this.getContentResolver();        //对指定uri进行监听,如果该uri代表的数据发生变化,就会调用PersonObserver中的onChange()        contentResolver.registerContentObserver(insertUri, true, new PersonObserver(new Handler()));    }        private final class PersonObserver extends ContentObserver{public PersonObserver(Handler handler) {super(handler);}@Overridepublic void onChange(boolean selfChange) {ContentResolver contentResolver = getContentResolver();Uri selectUri = Uri.parse("content://com.yaku.ContentProvider.userprovider/user");Cursor cursor = contentResolver.query(selectUri, null, null, null, "userid desc");while(cursor.moveToNext()){int id = cursor.getInt(cursor.getColumnIndex("userid"));String name = cursor.getString(cursor.getColumnIndex("name"));int age = cursor.getInt(cursor.getColumnIndex("age"));Log.i(TAG, "id="+ id + ",name="+ name+ ",age="+ age);}}    }}

?

热点排行