android数据存储读取6:contentProvider的使用(提供自己应用的数据)

本文详细介绍了ContentProvider在Android应用开发中的使用方法,包括如何定义类、实现方法、注册权限以及第三方应用如何访问其提供的数据。主要内容涵盖定义类、实现插入方法、配置manifest文件和实际使用场景。

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

contentprovider 可以提供应用的数据供其它的应用使用。同时也可以利用它访问其它的应用。比如访问手机短信、手机Music、联系人等等。优点在于提供了公共的、统一的数据访问接口。

也就是说 别的应用调用 固定的都有增删改查方法

ContentProvider的使用大致可以分为下面几个部分:

首先我们需要定义一个类继承ContentProvider

public class PersonContentProvider extends ContentProvider

(1)在类中定义一个静态代码块,实现UIR等的初始化设置

static {

uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);

// 添加一些uri(分机号)

uriMatcher.addURI(AUTHORITY, "person/insert", PRESON_INSERT_CODE);

}

"person/insert"  这个person名字一般是数据库的名字,当然用其它名字也可以。后面的insert一般取方法名字。

(2)实现insert方法 (首先要通过URI匹配权限是否正确)然欧才能对数据库进行操作

@Override

public Uri insert(Uri uri, ContentValues values) {

switch (uriMatcher.match(uri)) {

case PRESON_INSERT_CODE:

SQLiteDatabase db = mOpenHelper.getWritableDatabase();

if(db.isOpen()) {

long id = db.insert("person", null, values);

db.close();

return ContentUris.withAppendedId(uri, id);

}

break;

default:

throw new IllegalArgumentException("uri不匹配: " + uri);

}

return null;

}

(3)manifester中注册使用权限

        <provider

            android:name=".providers.PersonContentProvider"

            android:authorities="包名.PersonContentProvider"

            android:readPermission="aa.bb.cc.read"

            android:writePermission="aa.bb.cc.write" >

        </provider>


第三方应用使用数据的时候:

(1)manifester中权限声明

    <uses-permission android:name="aa.bb.cc.read"/>

    <uses-permission android:name="aa.bb.cc.write"/>

(2)创建内容提供者对象。调用公共Insert方法,插入对象。根据URI查找对象所在的位置

Uri uri = Uri.parse("content://包名.PersonContentProvider/person/insert");

// 内容提供者访问对象

ContentResolver resolver = getContext().getContentResolver();

ContentValues values = new ContentValues();

values.put("name", "fengjie");

values.put("age", 90);

uri = resolver.insert(uri, values);










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值