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

监听ContentProvider的数据变化

2015-08-20 18:14 691 查看
(1)、应用场景:假设有A与B两个应用访问同一个应用,A应用在第三方应用中新增类一个内容。B应用需要立即将其读取出来,就要使用到监听技术。
(2)、需要在原来基础上创建一个新的应用叫App.
(3)、用户点击按钮添加一条数据,然后需要在原来的插入方法里面添加一个API,用于作出哪一个数据被改变的响应。
This.getContext().getContentResover().notifyChange(RUi,observer);第二个参数为数据变化的监听者,设为null,如果不设为null,则本应用必须得到监听者。
(4)、Other应用为B应用。在其中注册一个数据变化监听器。
源代码:
public void insert(View v){//onclick事件
Uriuri=Uri.parse("content://org.blair.providers.personprovider/person");//contentProvider的文件地址
ContentResolverresover=this.getContentResolver();//获取内容提供者操作对象
ContentValues values=newContentValues();
values.put("name","韩菱纱");
values.put("phone","45349635963");
values.put("amount","1000000");
resover.insert(uri, values);
}

protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Uriuri=Uri.parse("content://org.blair.providers.personprovider/person");
this.getContentResolver().registerContentObserver(uri, true, newPersonContentObserver(new Handler()));
}
publicclass PersonContentObserver extends ContentObserver {

publicPersonContentObserver(Handler handler) {
super(handler);
}

@Override
publicvoid onChange(boolean selfChange) {
//得到最近添加的那一条记录 select * from person order by persionid desclimit 1
Uriuri=Uri.parse("content://org.blair.providers.personprovider/person");
Cursorcursor=getContentResolver().query(uri, null, null, null, "persionid desclimit 1");
if(cursor.moveToFirst()){
Stringname=cursor.getString(cursor.getColumnIndex("name"));
Log.i(TAG,name);
}
}

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