zoukankan      html  css  js  c++  java
  • 内容提供者学习笔记

    ##内容提供者笔记##
    ###步骤###
    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**

  • 相关阅读:
    BZOJ 1101 莫比乌斯函数+分块
    BZOJ 2045 容斥原理
    BZOJ 4636 (动态开节点)线段树
    BZOJ 2005 容斥原理
    BZOJ 2190 欧拉函数
    BZOJ 2818 欧拉函数
    BZOJ 3123 主席树 启发式合并
    812. Largest Triangle Area
    805. Split Array With Same Average
    794. Valid Tic-Tac-Toe State
  • 原文地址:https://www.cnblogs.com/jxtcnblogs/p/5857717.html
Copyright © 2011-2022 走看看