实现代码:
contentprovider:
package com.example.contentprovider;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
public class MyContentProvider extends ContentProvider {
private MyDao mydao;
public MyContentProvider() {
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
// Implement this to handle requests to delete one or more rows.
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public String getType(Uri uri) {
// TODO: Implement this to handle requests for the MIME type of the data
// at the given URI.
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public Uri insert(Uri uri, ContentValues values) {
// TODO: Implement this to handle requests to insert a new row.
return mydao.lytInsert(values);
}
@Override
public boolean onCreate() {
// TODO: Implement this to initialize your content provider on startup.
Context context=getContext();
mydao=new MyDao(context);
return false;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
// TODO: Implement this to handle query requests from clients.
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
// TODO: Implement this to handle requests to update one or more rows.
throw new UnsupportedOperationException("Not yet implemented");
}
}
Dao:
package com.example.contentprovider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
public class MyDao {
private final Context context;
private SQLiteDatabase database;
public MyDao(Context context){
this.context=context;
MyDBhelper dbHelper=new MyDBhelper(context,"lytDB",null,1);
database=dbHelper.getWritableDatabase();
}
public Uri lytInsert(ContentValues values){
long rowId=database.insert("student",null,values);
Uri uri=Uri.parse("context://lyt.provider1/student");
Uri inserturi= ContentUris.withAppendedId(uri,rowId);
context.getContentResolver().notifyChange(inserturi,null);
return inserturi;
}
}
resolver
package com.example.contentresolver;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ContentResolver resolver=getContentResolver();
ContentValues values=new ContentValues();
values.put("name","lyt");
values.put("age","20");
Uri uri=Uri.parse("Content://lyt.provider1/student");
Button button=findViewById(R.id.button);
button.setOnClickListener(v->{
resolver.insert(uri,values);
});
}
}
成果截图: