zoukankan      html  css  js  c++  java
  • 四大组件之内容提供者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", "错误");

                       }

        }

  • 相关阅读:
    记第一次为开源代码报漏洞
    入职第三周——总结前两周学习内容
    入职一星期之感想
    毕业季之礼
    基于mint-ui的移动应用开发案例二(项目搭建)
    基于mint-ui的移动应用开发案例一(简介)
    工作笔记一——杂项
    微信小程序实战小小应用——豆瓣电影
    React学习之坑(二)- 基础入门
    React学习笔记(一)- 环境搭建
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/345e.html
Copyright © 2011-2022 走看看