四大組件之內容提供者——ContentProvider
ContentProvider要結合數據庫進行使用,ContentProvider就是在其他的項目中獲取數據庫中的內容,並且對其進行操作(增、刪、改、查)。
對ContentProvider進行操作需要借助uriMatcher(匹配器)。
ContentProvider代碼
static{
uriMatcher.addURI("wang.provider","query",0);
uriMatcher.addURI("wang.provider","insert",1);
uriMatcher.addURI("wang.provider","delete",2);
uriMatcher.addURI("wang.provider","update",3);
}
@Override
public boolean onCreate() {
mySql =new MySql(getContext());
database =mySql.getWritableDatabase();
return false;
}
@Nullable
@Override
public Cursorquery(@NonNullUri uri, @Nullable String[] projection,@Nullable String selection,@Nullable String[]selectionArgs,@Nullable String sortOrder) {
if (uriMatcher.match(uri) ==0){
Cursor cursor = database.query("user1",projection,selection,selectionArgs,null,null,sortOrder);
return cursor;
}else{
return null;
}
}
@Nullable
@Override
public StringgetType(@NonNullUri uri) {
return null;
}
@Nullable
@Override
public Uri insert(@NonNullUri uri, @Nullable ContentValuesvalues) {
if(uriMatcher.match(uri) ==1){
Long code = database.insert("user1",null,values);
Uri uri1 = Uri.parse("wang.provider/insert"+code);
return uri1;
}else{
return null;
}
}
@Override
public int delete(@NonNullUri uri, @Nullable String selection,@Nullable String[] selectionArgs) {
if(uriMatcher.match(uri) ==2){
/**
* 返回值被影響的行數
* */
int code=database.delete("user1",selection,selectionArgs);
return code;
}else{
return -1;
}
}
@Override
public int update(@NonNullUri uri, @Nullable ContentValues values,@NullableString selection,@NullableString[] selectionArgs) {
if(uriMatcher.match(uri) ==3){
/**
* 返回值被影響的行數
* */
int code=database.update("user1",values,selection,selectionArgs);
return code;
}else{
return -1;
}
}
其他程序中調用的代碼:
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
public void query_(View view){
Uri uri = Uri.parse("content://wang.provider/query");
Cursor cursor = resolver.query(uri,null,null,null,null,null);
if(cursor != null){
while(cursor.moveToNext()){
String name = cursor.getString(1);
String age = cursor.getString(2);
Log.e("MainActivity", name + "我是其他程序來調用你的!" + age);
}
}
}
public void insert_(View view){
Uri uri = Uri.parse("content://wang.provider/insert");
ContentValues values = new ContentValues();
values.put("name","haha");
values.put("age",20);
resolver.insert(uri,values);
}
public void delete_(View view){
Uri uri = Uri.parse("content://wang.provider/delete");
resolver.delete(uri,"name = ?",new String[]{"coco"});
}
public void update_(View view){
Uri uri = Uri.parse("content://wang.provider/update");
ContentValues values = new ContentValues();
values.put("name","xixi");
resolver.update(uri,values,"name = ?",new String[]{"haha"});
}
ContentProvider主要用於系統間程序·的相互訪問。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。