四大组件之内容提供者——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;
}
}
其他程序中调用的代码:
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主要用于系统间程序·的相互访问。
相关文章推荐
- Android基础之四大组件-ContentProvider(内容提供者)
- Android之四大组件之一-ContentProvider内容提供者的使用(二)
- 四大组件之内容提供者ContentProvider
- Android四大组件之一ContentProvider(内容提供者)
- 四大组件之------------内容提供者ContentProvider
- Android四大组件之ContentProvider(内容提供者)01
- Android四大组件之一之内容提供者ContentProvider
- Android 四大组件之一 :ContentProvider内容提供者从入门到精通
- Android四大组件之ContentProvider(内容提供者)
- Android四大组件之内容提供者ContentProvider
- 安卓四大组件之一ContentProvider内容提供者
- Android四大组件之ContentProvider(内容提供者)02
- 数据存储详解(四)及四大组件之一 之--->ContentProvider(内容提供者)
- Android四大组件之一ContentProvider内容提供者(继SQLite数据存储篇)
- android四大组件之一内容提供者contentprovider
- Android四大组件之Content Provider(内容提供者)
- Android组件系列----ContentProvider内容提供者
- Android组件之ContentProvider(内容提供者)
- 【android学习】四大组件-Content Provider(内容提供者)
- Android四大组件-内容提供者