内容提供者ContentProvider简单总结

内容提供者是Android四大组件之一
内容提供者的作用是跨APP操作、访问数据库

1.自定义类继承自 ContentProvider

实现ContentProvider要重写6个方法

public class MyContentProvider extends ContentProvider {
    MyOpenHelper myOpenHelper;
    SQLiteDatabase database;
    
    @Override
    public boolean onCreate() {
        //new 数据库
        myOpenHelper = new MyOpenHelper(getContext());
        //获取读写权限
        database = myOpenHelper.getWritableDatabase();

        if (database != null){
            return true;
        }
        return false;
    }
    
    @Nullable
    @Override//对表进行查询操作
    public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
        return
        database.query("student"
        ,projection
        ,selection
        ,selectionArgs
        ,null
        ,null
        ,sortOrder);
    }

    @Nullable
    @Override//
    public String getType(@NonNull Uri uri) {
        return null;
    }

    @Nullable
    @Override//对表进行添加操作
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
        database.insert("student",null,values);
        return uri;
    }

    @Override//对表进行删除操作
    public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
        return database.delete("student",selection,selectionArgs);
    }

    @Override//对表进行修改操作
    public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {
        return database.update("student",values,selection,selectionArgs);
    }
}

2.要在清单文件进行注册

<provider
     android:name=".MyContentProvider"
     android:authorities="com.bw.student"
     android:exported="true"
     android:readPermission="com.bw.student.READ"
     android:writePermission="com.bw.student.WRITE"/>

进行权限设置

<permission android:name="com.bw.student.READ"/>
<permission android:name="com.bw.student.WRITE"/>

3.索取方的操作

首先要添加权限

<uses-permission android:name="com.bw.student.READ"/>
<uses-permission android:name="com.bw.student.WRITE"/>
ContentResolver resolver = getContentResolver()//获取内容提供者
Uri uri = Uri.parse("content://com.bw.student");//转换别名

剩下的就是内容提供者打点调用增删改查的方法了

//添加操作
public void insertUser(){
    ContentValues values = new ContentValues();
    values.put("uname","张三");
    values.put("age",19);
    resolver.insert(uri,values);
}

//修改操作
public void updateUser(){
    ContentValues values = new ContentValues();
    values.put("age",11);
    resolver.update(uri,values,"uname = ?",new String[]{"张三"});
}

//删除操作
public void deleteUser(){
    resolver.delete(uri,"uid = ?",new String[]{"1"});
}

//查询操作
public void queryUser(){
    Cursor query = resolver.query(uri, null, null, null, null, null);
    while (query.moveToNext()){
        String uname = query.getString(query.getColumnIndex("uname"));
        int age = query.getInt(query.getColumnIndex("age"));
        Log.i("---",uname+"###"+age);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值