今天学习的是内容提供者ContentProvider和内容访问者ContentResolver
说一下我的理解,这个组件的用处是在系统或者其他app中获得数据的功能
系统里比如通讯录,比如短信等等,而且是跨app的,但前提是对方必须有提供者你才能访问
我觉得给我最深感触的就是第三方登录这个
今天有点事情,长话短说,步骤都在代码里面
public class ContentProvi extends ContentProvider {
private DbHelper dbHelper;
private SQLiteDatabase sqLiteDatabase;
@Override
public boolean onCreate() {
dbHelper = new DbHelper(getContext(),"person.db",null,2);
sqLiteDatabase = dbHelper.getReadableDatabase();
return false;
}
//查询
@Nullable
@Override
public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1){
return sqLiteDatabase.query(false,"person",strings,s,strings1,null,null,s1,null);
}
@Nullable
@Override
public String getType(Uri uri) {
return null;
}
//添加
@Nullable
@Override
public Uri insert(Uri uri, ContentValues contentValues) {
sqLiteDatabase.insert("person","name",contentValues);
return null;
}
//删除
@Override
public int delete(Uri uri, String s, String[] strings) {
sqLiteDatabase.delete("person",s,strings);
return 0;
}
//修改
@Override
public int update(Uri uri, ContentValues contentValues, String s, String[] strings) {
sqLiteDatabase.update("person",contentValues,s,strings);
return 0;
}
首先呢就是写一个类,用于提供你想要提供的数据,一共重写了六个方法,创建,返回类型,以及增删改查
然后就是访问者
直接用
context.getContentResolver();拿到对象
然后就开始各种增删改查
public final Uri insert(Uri url, ContentValues values)
public final int delete(Uri url, String where, String[] selectionArgs)
public final int update(Uri uri, ContentValues values, String where, String[] selectionArgs)
public final Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
四个放法望着一摆,需要注意的是之前需要的类名在这里要用url,可以将字符串转换成url,用parse方法
然后取出来的是结果集cursor