一:设计目标
创建一个provider,然后在另一个app中使用resolver调用这个provider。
二:设计流程
1.新建一个resovler项目
(1)在MainActivity的布局文件里布局
(2)在MainActivity中添加代码,进行Provider的调用
package com.example.resovler;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=findViewById(R.id.button);
ContentResolver resolver=getContentResolver();
Uri uri=Uri.parse("content://wz.provider2/student");
ContentValues values=new ContentValues();
values.put("name","wangzhuo");
values.put("age","20");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
resolver.insert(uri,values);
}
});
}
}
(3)在AndroidManifest.xml文件进行MyProvider App信息的标签配置,以此获取MyProvider App的信息
<queries>
<package android:name="com.example.myprovider"></package>
</queries>
2.新建MyProvider项目
(1)新建MyDBHelper.java
public class MyDBHelper extends SQLiteOpenHelper {
public MyDBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context,name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL("create table student (id integer primary key autoincrement,name varchar(20),age integer)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
(2)新建MyDao.java
public class MyDao {
private Context context;
private SQLiteDatabase database;
public MyDao(Context context){
this.context=context;
MyDBHelper dBHelper=new MyDBHelper(context,"wz_DB",null,1);
database=dBHelper.getWritableDatabase();
}
public Uri DAOinsert(ContentValues contentValues){
long rowid = database.insert("student",null,contentValues);
Uri uri=Uri.parse("content://wz.provider2");
Uri inserturi = ContentUris.withAppendedId(uri,rowid);
context.getContentResolver().notifyChange(inserturi,null);
return inserturi;
}
}
(3)新建MyContentProvider.java(插入数据)
public class MyContentProvider extends ContentProvider {
private MyDao myDAO;
public MyContentProvider() {
}
@Override
public Uri insert(Uri uri, ContentValues values) {
return myDAO.DAOinsert(values);
}
@Override
public boolean onCreate() {
Context context = getContext();
myDAO = new MyDao(context);
return false;
}
}
三:运行展示
启动MyProvider,查看数据库(此时只有五条数据)
启动resovler,点击button,再次查看MyProvider的数据库(多出第六条)