您的位置:首页 > 编程语言 > PHP开发

四大组件之内容提供者——ContentProvider

2017-05-08 23:22 399 查看
四大组件之内容提供者——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 Cursor
query(@NonNull
Uri 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 String
getType(@NonNull
Uri uri) {

    return null;
}

@Nullable

@Override
public Uri
insert(@NonNull
Uri uri,
@Nullable ContentValuesvalues) {

    if(uriMatcher.match(uri) ==
1){

        Long code = database.inser
ab65
t("user1",null,values);

        Uri uri1 = Uri.parse("wang.provider/insert"+code);

        return uri1;

    }else{

        return null;

    }

}

@Override
public int delete(@NonNull
Uri 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(@NonNull
Uri 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主要用于系统间程序·的相互访问。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: