Android S content provider

127 阅读1分钟

一 概述

ContentProvider是安卓中用于跨进程提供信息的组件。提供统一的接口供client端使用,client不必在乎server端的具体数据来源实现。 ContentProvider的使用分为两部分: 1、server端定义provider 2、client端请求server端的provider 以下是组件的简单介绍: developer.android.com/guide/topic… www.runoob.com/w3cnote/and…

1.1 server端创建内容提供器

提供内容的app只需要创建类继承自抽象类ContentProvider并重写其抽象方法,并在manifest中生命即可。 具体代码示例如下链接:www.runoob.com/w3cnote/and…

1.2 client使用server端提供的provider

private void getMsgs(){
    Uri uri = Uri.parse("content://sms/");
    ContentResolver resolver = getContentResolver();
    //获取的是哪些列的信息
    Cursor cursor = resolver.query(uri, new String[]{"address","date","type","body"}, null, null, null);
    while(cursor.moveToNext())
    {
        String address = cursor.getString(0);
        String date = cursor.getString(1);
        String type = cursor.getString(2);
        String body = cursor.getString(3);
        System.out.println("地址:" + address);
        System.out.println("时间:" + date);
        System.out.println("类型:" + type);
        System.out.println("内容:" + body);
        System.out.println("======================");
    }
    cursor.close();
}

client端首先需要获取app进程对应的ContentResolver。调用ContentResolver的query方法来查询接口。 ContentResolver类是安卓为client端提供的访问provider的工具类。 具体代码示例如下链接:www.runoob.com/w3cnote/and…

1.3 架构图

1.4 关键类解释

ContentProvider内容提供器server端需要继承的抽象类,为client提供数据
ContentResolverclient端查询server端所需要借助的工具类

二 ContentResolver.query流程解析

2.1 流程图

kill provider.drawio

2.2 时序图

23provider.drawio

2.3 代码解析