• 第九天 内容提供者 ContentResolver


    重点:理解ContentProvider 的作用和创建流程

    1. 内容提供者,提供 其他数据库的访问。

      特点 
         - 描述 : 它是android 四大组件之一,需要androidManifestxml 注册,没有界面,为第三方的应用提供访问数据的标准接口
         - 作用 : 1. 共享数据给第三方应用   2. 统一数据访问的平台
         - 线程安全的问题 : 内容提供者是线程安全的 ,内容提供者是单例模式 ,且对相应的接口方法实现了同步锁(synchronized) ,由 内容访问者和内容提供者共同维护线程安全

    内容提供者需要在配置清单中 配置

    1  <provider android:name=""
    2             android:authorities=""
    3             android:exported="true"></provider>

     2.通过ContentProvider共享数据实现流程 
        * 准备要共享的数据,一般就是sqlite数据库
        * 编写类,继承ContentProvider ,并且实现相应的接口方法(增删改查、getType: 获取要访问的数据的MIME类型(*/image,*/video,text/plain ))
        * 内容提供者在AndroidManifest.xml注册,并且设置 认证或者权限 ,android:authories (它是该内容提供者的唯一标识)
        * 第三方应用通过内容解决者来访问 ContentProvider 
            ContentResolver resolver=Content().getContentResolver()
           - 增上改查

    public void onClick(View v) {
            // TODO Auto-generated method stub
            ContentResolver cr = getContentResolver();
            switch (v.getId()) {
            case R.id.save:            
                Cursor cur = cr.query(Uri.parse("content://sms"), new String[]{"address","date","type","body"} , null, null, null);
                while(cur.moveToNext()){
                    String address = cur.getString(0);
                    String date = cur.getString(1);
                    String type = cur.getString(2);
                    String body = cur.getString(3);
                    System.out.println(address + "--" + date + "--" + type+ "--"+ body );
                }
                break;
            case R.id.insert:
                ContentValues cv = new ContentValues();
                cv.put("address", 95558);
                cv.put("date", System.currentTimeMillis() );
                cv.put("type", 1);
                cv.put("body", "你已转账1,000,000元");
                cr.insert(Uri.parse("content://sms"), cv);
                
                break;
    
            
            }
        }
    View Code

       3.常用的API
        1. Uri  :统一资源标识符,它比url更细粒度 ,可以标识 数据库中的表的记录的某个字段
           作用: 表示你要操作的数据
     
        2. UriMatch  :匹配Uri  地址 
        3. ContentUris  :内容Uri :主要解析id或者拼id

    4.访问系统提供的内容提供者
         - uri:content://sms  : 短信
           字段: "_id", "address", "body", "read", "date", "type", "protocol"
         - Uri:content://call_log/calls :通话记录
           字段:_id、number、date、duration
           通话记录权限
        <uses-permission android:name="android.permission.READ_CALL_LOG"/>
        <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
        <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
        <uses-permission android:name="android.permission.READ_CONTACTS"/>

     View Code

    大道至简,知易行难,知行合一,得到功成;大道至简,悟在天成。
  • 相关阅读:
    CSS---@import
    C语言中float,double类型,在内存中的结构(存储方式)
    科普:字,字长,字节,位
    mysql的字段类型范围必须重视起来
    print,print_r,echo,var_dump,var_export比较
    常见编码格式
    php截取字符串,无乱码
    MYSQL配置详解
    Mysql主从复制,读写分离
    17173php招聘
  • 原文地址:https://www.cnblogs.com/XingzhiDai/p/5495628.html
Copyright © 2020-2023  润新知