安卓四大组件——ContentProvider

本文详细介绍了ContentProvider在Android中的作用,包括管理结构化数据集的访问,其生命周期随系统启动和关闭,以及自定义ContentProvider的实现,涉及重写的方法如查询、插入和删除等。展示了如何使用UriMatcher进行URI匹配和权限控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.作用

管理 结构化数据集的访问 ,封装数据,应用间数据共享

2.生命周期

只是它属于系统应用、所以随系统启动而初始化,随系统关机而结束;

3.具体实现

自定义的ContentProvider

有六个需要重写的方法,分别是创建和增删改查,

                                        还有一个getType()方法,这个方法用来返回uri对象所对应的MIME类型指定对应的uri地址,然后这写uri地址做逻辑判断,等到其他程序来调用的时候,通过这些逻辑判断来进行安全控制和访问内容的限制

public class AccessProvider extends ContentProvider {
    public AccessProvider() {
    }

    private static UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    static {
        uriMatcher.addURI("com.example.contentProvider.provider1",
                "table1", 1);
        uriMatcher.addURI("com.example.contentProvider.provider1",
                "table1/#", 2);
        uriMatcher.addURI("com.example.contentProvider.provider1",
                "table2", 3);
        uriMatcher.addURI("com.example.contentProvider.provider1",
                "table2/#", 4);
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        // Implement this to handle requests to delete one or more rows.
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public String getType(Uri uri) {
        // TODO: Implement this to handle requests for the MIME type of the data
        // at the given URI.
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        // TODO: Implement this to handle requests to insert a new row.
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public boolean onCreate() {
        // TODO: Implement this to initialize your content provider on startup.
        return false;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection,
                        String[] selectionArgs, String sortOrder) {
        switch (uriMatcher.match(uri)){
            case 1:
                Log.d("AccessProvider", "进入了第一个判定条件");break;
            case 2:
                Log.d("AccessProvider", "进入了第二个判定条件");break;
            case 3:
                Log.d("AccessProvider", "进入了第三个判定条件");break;
            case 4:
                Log.d("AccessProvider", "进入了第四个判定条件");break;
            default:
                break;
        }
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @RequiresApi(api = Build.VERSION_CODES.O)


    @Override
    public int update(Uri uri, ContentValues values, String selection,
                      String[] selectionArgs) {
        // TODO: Implement this to handle requests to update one or more rows.
        throw new UnsupportedOperationException("Not yet implemented");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值