内容提供者(ContentProvider)是Android四大组件之一,用于在不同应用之间共享数据。内容提供者通过统一资源标识符(URI)来标识数据,并使用一套标准的接口来访问和操作数据。它是Android系统中实现跨应用数据共享的主要方式。
作用
- 数据共享:允许不同应用之间共享数据,例如联系人、媒体文件等。
- 数据封装:提供统一的接口来访问和操作数据,隐藏底层数据存储的实现细节。
- 权限控制:通过权限机制控制数据的访问,确保数据的安全性。
基本结构
内容提供者通过继承ContentProvider类来实现,主要包括以下几个方法:
- onCreate():初始化内容提供者。
- query():查询数据。
- insert():插入数据。
- update():更新数据。
- delete():删除数据。
- getType():返回数据的MIME类型。
示例
实现一个简单的内容提供者
1. 创建内容提供者类
public class MyContentProvider extends ContentProvider {
private static final String AUTHORITY = "com.example.mycontentprovider";
private static final String PATH = "mydata";
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + PATH);
private SQLiteDatabase database;
@Override
public boolean onCreate() {
// 初始化数据库或其他数据存储
MyDatabaseHelper dbHelper = new MyDatabaseHelper(getContext());
database = dbHelper.getWritableDatabase();
return database != null;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
// 查询数据
return database.query("mytable", projection, selection, selectionArgs, null, null, sortOrder);
}
@Override
public Uri insert(Uri uri, ContentValues values) {
// 插入数据
long id = database.insert("mytable", null, values);
return ContentUris.withAppendedId(CONTENT_URI, id);
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {

最低0.47元/天 解锁文章
&spm=1001.2101.3001.5002&articleId=141253441&d=1&t=3&u=eb7e9420a38e4365b7fb5ca608568f20)
1767

被折叠的 条评论
为什么被折叠?



