• 四大组件之内容提供者ContentProvider


    1.内容提供者(ContentProvider)

    作用:应用程序中的数据对外进行共享,外界可以对该应用进行增删改查。如:通讯录

    内容提供者的创建:

    <1>.必须在应用程序的根包中创建一个类,该类继承ContentProvider

    <2>配置AndroidManifest.xml文件,在应用节点下增加Provider节点

       Name:类名  Authorities:唯一标识,表示内容提供者的唯一性

    2.内容提供者用到的工具:

    UriMatcher类:对路径进行判断。

    UriMatcher MATCHER=new UriMatcher(UriMatcher.NO_MATCH);

    常用方法:

    UriMatcher.match(Uri)判断是否合法。

    UriMatcher.addURI(“”)增加合法的路径。

    ContentUris类:对路径进行修改。(静态类)

    对路径中的参数进行提取:ContentUris.parseID(Uri)

    增加字段:ContentUris.withAppendedId(uri, pid);

    3.对某个接口内容提供者对外进行更新通知:

    This.getContext().getContentResolver().notifyChange(uri,null)

    4.使用内容提供者的方法:

    <1>.构造路径<2>取得ContentResolver对象<3>调用Resolver的方法进行访问

    Uri uri=Uri.parse("content://com.example.providers.personprovider/person");

    ContentResolver Resolver=this.getContext().getContentResolver();

    Resolver.insert(uri,values);

    5.获得内容提供者的变化:

    <1>构造路径,<2>取得ContentResolver对象<3>调用ContentResolver的registerContentObserver(uri,true,new PersonContentObserver(new Handler()))方法注册变化通知

    private class PersonContentObserver extends ContentObserver{

                       public PersonContentObserver(Handler handler) {

                                super(handler);

                       }

                       public void onChange(boolean selfChange) {//当得到通知后进行查询最新数据

                   Uri uri=Uri.parse("content://com.example.providers.personprovider/person/query");

                          //select * from person order by personid desc limit 1

                          ContentResolver resolver=MainActivity.this.getContentResolver();

                          Cursor cursor=resolver.query(uri, null, null, null, "personid desc limit 1");

                          if(cursor.moveToFirst()){

                                   Log.i("PersonContent", cursor.getString(cursor.getColumnIndex("name")));

                          }

                          else

                                   Log.i("PersonContent", "错误");

                       }

        }

  • 相关阅读:
    HUD 1284 钱币兑换问题
    HUD 1284 钱币兑换问题
    HDU 1283 最简单的计算机
    HDU 1283 最简单的计算机
    商品搜索引擎---推荐系统设计
    Spark机器学习:TF-IDF实例讲解
    【读书笔记】Elasticsearch集成Hadoop最佳实践
    Java面试题集合
    Spring Boot企业微信点餐系统-第一章-课程介绍
    Eclipse下svn的创建分支/合并/切换使用
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/345e.html
Copyright © 2020-2023  润新知