ContentProvider内容提供者的使用

本文介绍了Android的ContentProvider,用于进程间数据共享。内容包括ContentProvider的介绍、工作原理、自定义ContentProvider的实现步骤,以及如何进行进程间ContentProvider的增删改查操作,并探讨了自定义权限的重要性及其配置方法。
摘要由CSDN通过智能技术生成

ContentProvider 的介绍和使用

导入注解的包
implementation ‘androidx.annotation:annotation:+’

ContentProvider介绍

其实呢,内容提供者很好理解,就是给其他的应用程序,提供一个访问我们sqlite的文件的机会.
因为涉及到数据的安全,才有了提供者和解析者.
只有提供者提供了数据,解析者才可以拿到.

1.ContentProvider内容提供者(四大组件之一)主要用于在不同的应用程序之间实现数据共享的功能。
2.技能get点:

(1)访问系统自带的内容提供者(******)
手机联系人/音频/视频/图库/短信/系统设置
(2)自己写内容提供者
3.三个重点
(1) contentProvider 内容提供者
(2) contentResolve 内容解析者
(3) uri 地址
可以简单的理解为:
内容提供者提供一个地址,内容解析者把uri解析一下,去指向提供者的地址.

原理图
在这里插入图片描述

ContentProvider机制

内容提供者的运行原理

进程内数据共享

不同进程间的数据通信


自定义ContentProvider

一,什么是自定义内容提供者
谈到内容提供者,大家就应该想到提供方和索要方,现在,我们想要做提供方,别人来访问我们的数据库,那我们就需要自定义内容提供者了。
在这里插入图片描述
二.思路:
1.提供方:ContentProvider
(1)创建数据库,自定义类继承SQLiteOpenHelper
(2)自定义内容提供者类,继承ContentProvider,重写insert/delete/update/query方法,向外界提供方法
(3)清单文件中注册内容提供者

2.索要方:ContentResolver
(1)通过Context的getContentResolver方法获得ContentResolver对象
(2)确定uri
(3)调用insert/delete/update/query方法访问数据库

三.提供者代码:创建my_contentprovider (新建的moudle)
(1)自定义类继承SQLiteOpenHelper

public class MyHelper extends SQLiteOpenHelper {
   
    public MyHelper(Context context) {
   
        super(context, "user.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
   
        db.execSQL("create table user (_id integer primary key autoincrement ,name varchar(30),age integer)");
        for(int i=1;i<10;i++){
   
            db.execSQL("insert into user values(null,?,?)",new String[]{
   "非常的帅"+i+"",i+""});
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   

    }
}

(2)自定义内容提供者类,继承ContentProvider
重新其他的方法

package com.example.my_contentprovider;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.CancellationSignal;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

public class MyProvider extends ContentProvider
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值