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

实例教程十:监听ContentProvider中数据的变化

2012-10-31 11:38 483 查看
不错的帖子:
Android漂亮蘑菇街UI界面
http://www.eoeandroid.com/thread-211482-1-1.html
Android 3D 乡村赛车 完整代码
http://www.eoeandroid.com/thread-211471-1-1.html
乐看播放器源代码,对写视频播放的人来说非常有用
http://www.eoeandroid.com/thread-211494-1-1.html
--------------------------------帖子正文---------------------
1.首先新建一个Aapp应用程序,还是需要使用到上一章的数据
package cn.itcast.app;    import android.app.Activity;  import android.content.ContentResolver;  import android.content.ContentValues;  import android.net.Uri;  import android.os.Bundle;  import android.view.View;    public class MainActivity extends Activity {          /**       * 监听ContentProvider(内容提供者)中的数据变化       * 为什么要监听?       * 例:此时有A应用和B应用,A应用向ContentProvider添加一条数据       * 而此时B应用若想知道A应用做了什么操作,则需ContentProvider通知       * ContentProvider会发出数据变化通知,B应用听过监听ContentProvider得到通知       */                @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);      }                        public void insert(View v){              Uri uri = Uri.parse("content://cn.itcast.providers.personprovider/person");              ContentResolver resolver = this.getContentResolver();              ContentValues values = new ContentValues();              values.put("name", "lixiao");              values.put("phone", "123456789");              values.put("amount", "500");              resolver.insert(uri, values);      }        }
<?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="fill_parent"      android:layout_height="fill_parent"      android:orientation="vertical" >        <Button          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:onClick="insert"          android:text="@string/button" />    </LinearLayout>
<?xml version="1.0" encoding="utf-8"?>  <resources>        <string name="hello">Hello World, MainActivity!</string>      <string name="app_name">A应用</string>      <string name="button">往内容提供者添加数据</string>    </resources>
使用上章的Other程序作用B应用程序,监听ContentProvider
package cn.itcast.other;        import android.app.Activity;    import android.content.ContentResolver;    import android.content.Context;    import android.database.Cursor;    import android.net.Uri;    import android.os.Bundle;    import android.os.Handler;    import android.util.Log;    import android.widget.Toast;        public class MainActivity extends Activity {        /** Called when the activity is first created. */        @Override        public void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            setContentView(R.layout.main);                        Uri uri = Uri.parse("content://cn.itcast.providers.personprovider/person");                //注册一个数据变化监听器                    this.getContentResolver().registerContentObserver(uri, true, new PersonContentObserver(new Handler()));        }                private class PersonContentObserver extends ContentResolver{                    public PersonContentObserver(Handler handler) {                            super(handler);                    }                                        public void onChange(boolean selfChange) {                            // TODO Auto-generated method stub                            Uri uri = Uri.parse("content://cn.itcast.providers.personprovider/person");                            Cursor cursor = getContentResolver().query(uri, null, null, null, "personId desc limit 1");                            if(cursor.moveToFirst()){                                    String name = cursor.getString(cursor.getColumnIndex("name"));                                    Log.i("MainActivity", name);                            }                    }      }    }


本文出自 “Android小子的” 博客,请务必保留此出处http://androidrigl.blog.51cto.com/7531835/1247510
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: