android authorities 获取_Android四大组件之ContentProvider

前言

Hi,大家好,我们又双叒叕见面啦,为了让大家快速的学习Android知识,我们每天都在更新文章,相信小伙伴们已经开始眼熟我们了!这一期我们讲解ContentProvider(内容提供者)相关知识,他也是我们近期更新的Android四大组件中最后一个。话不多说,让我们赶紧开始学习吧~

简介

ContentProvider是Android系统中为开发者专门提供的不同应用间进行数据共享的组件,其提供了一套标准的接口用来获取以及操作数据,准许开发者把自己的应用数据根据需求开放给其他应用进行增删改查,而无须担心直接开放数据库权限而带来的安全问题。系统预置了许多ContentProvider用于获取用户数据,例如消息、联系人、日程表等。

具体形式如下图所示:

7eef33cded68f4a8a34f359144e7ed0c.png

使用方式

1 ContentResolver

在ContentProvider的使用过程中,需要借用ContentResolver来控制ContentProvider所暴露处理的接口,作为代理来间接操作ContentProvider以获取数据。

在 Context.java 的源码中如下抽象方法

/** Return a ContentResolver instance for your application's package. */
    public abstract ContentResolver getContentResolver();

所以可以在所有继承Context的类中通过 getContentResovler() 方法获取ContentResolver

ContentResolver contentResolver = getContentResovler();

2 ContentProvider

ContentProvider作为Android四大组件之一,并没有Activity那样复杂的生命周期,只有简单地onCreate过程。

创建一个自定义ContentProvider的方式是继承ContentProvider类并实现其六个抽象方法:

/** 
* @author: 下码看花 
* date: 2019/8/8 
* description: ContentProvider例子 
*/
public class MyContentProvider extends ContentProvider {
    

    /**     
    * 执行初始化工作     
    * @return     
    */    
    @Override    
    public boolean onCreate() {
    
        return false;    
    }    

    /**     
    * 查询数据     
    * @param uri     
    * @param projection     
    * @param selection     
    * @param selectionArgs     
    * @param sortOrder     
    * @return     
    */    
    @Override    
    public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String       selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
    
        return null;    
    }    

    /**     
    * 通过Uri返回对应的MIME类型     
    * @param uri     
    * @return     
    */    
    @Override    
    public String getType(@NonNull Uri uri) {
    
        return null;    
    }    

    /**     
    * 插入新数据     
    * @param uri     
    * @param values     
    * @return     
    */    
    @Override    
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
    
        return null;   
    } 

    /**     
    * 删除已有数据    
    * @param uri     
    * @param selection     
    * @param selectionArgs     
    * @return     
    */   
    @Override    
    public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[]      selectionArgs) {
    
        return 0;    
    }

    /**     
    * 更新数据     
    * @param uri     
    * @param values     
    * @param selection     
    * @param selectionArgs     
    * @return     
    */    
    @Override    
    public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String        selection, @Nullable String[] selectionArgs) {
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值