内容提供者学习笔记

##内容提供者笔记##
###步骤###
1、创建实现了ContentProvider的子类MyContentProvider并重写父类的方法

2、作为android四大组件之一,要在manifest.xml文件中注册provider标签

    <provider
            android:name="cn.itcast.db.MyContentProvider"
            android:authorities="cn.itcast.db.persondb" >
    </provider>
>其中
>**name**为Myprovider所在的文件路径;
>**authorities**为自定义内容,但最好应顾名思义(应为数据库所在的包名/数据库名)

3、创建UriMatcher对象,参数舒适化为 **-1**

        public static UriMatcher urimacher = new UriMatche(-1);

4、在静态代码块中增加uri路径

        static{
            urimacher.addURI("cn.itcast.db.persondb","query",1);
            urimacher.addURI("cn.itcast.db.persondb","insert",2);
            urimacher.addURI("cn.itcast.db.persondb","delete",3);
            urimacher.addURI("cn.itcast.db.persondb","update",4);
            //content://cn.itcast.db.persondb/insert
            //content://cn.itcast.db.persondb/delete
            //content://cn.itcast.db.persondb/update
            //content://cn.itcast.db.persondb/query
        }
5、重写query方法时

    public Cursor query(Uri uri, String[] projection, String selection,
            String[] selectionArgs, String sortOrder) {
        // TODO Auto-generated method stub
        int result = urimacher.match(uri);
        if(result==1){
            SQLiteDatabase db = sqlite.getReadableDatabase();
            return db.query("info", projection, selection, selectionArgs, null, null, sortOrder);
        }else{
            throw new RuntimeException("路径错误,请求得到数据失败");
        }
    }
6、在其他应用程序中通过内容提供者获取内容

     Uri uri = Uri.parse("content://cn.itcast.db.persondb/query");
        Cursor cursor = resolver.query(uri, null, null, null, null);
        while(cursor.moveToNext()){
            int id = cursor.getInt(cursor.getColumnIndex("_id"));
            String name = cursor.getString(cursor.getColumnIndex("name"));
            String phone = cursor.getString(cursor.getColumnIndex("phone"));
            System.out.println(id+"--"+name+"--"+phone);
        }
        cursor.close();
*根据内容提供者中已添加的uri路径进行使用*
**//content://cn.itcast.db.persondb/insert
  //content://cn.itcast.db.persondb/delete
  //content://cn.itcast.db.persondb/update
  //content://cn.itcast.db.persondb/query**

posted @ 2016-09-09 18:33  user_jxt  阅读(207)  评论(0编辑  收藏  举报