安卓移动开发作业三
设计目标
- 采用文件方式对外共享数据
- 增加新增按钮的单项点击功能,点击后实现新增表数据的功能
功能说明
- Android提供了ContentProvider,一个程序可以通过实现一个ContentProvider的抽象接口将自己的数据完全暴露出去。contentprovider主要用于在不同的应用程序之间实现数据共享的功能,它有一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访数据的安全性。在本次实验中的效果如下,在contentprovide中可以访问resolver,resolver可以调用contentprovider,实现SQLite数据库的操作。
代码解析
Button button=findViewById(R.id.button);
ContentResolver resolver=getContentResolver();
Uri uri=Uri.parse("content://dsy.provider/student");
ContentValues values=new ContentValues();
values.put("name","dsy");
values.put("age",18);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resolver.insert(uri,values);
}
});
定义一个button按钮并且绑定一个点击事件,实现点击insert按钮完成数据库表数据的添加
public Uri DaoInsert(ContentValues values) {
long rowId=db.insert("user",null,values);
Uri uri=Uri.parse("content://dsy.provider/user");
Uri newUri= ContentUris.withAppendedId(uri,rowId);
context.getContentResolver().notifyChange(newUri,null);
return newUri;
}
第一行实现了将values数据插入到表中。第二行将字符串转成uri格式,注意这个字符串需要和resolve中的一致。Android提供内容的叫Provider,Uri作为唯一的标识来标识这个Provider。
public class MyContentProvider extends ContentProvider {
private MyDao myDao;
public MyContentProvider() {
}
@Override
public boolean onCreate() {
Context context=getContext();
myDao=new MyDao(context);
return false;
}
@Nullable
@Override
public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Nullable
@Override
public String getType(@NonNull Uri uri) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Nullable
@Override
public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
return myDao.DaoInsert(values);
}
@Override
public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {
throw new UnsupportedOperationException("Not yet implemented");
}
}
MyContentProvider继承了ContentProvider,在onCreate()方法中完成myDao的初始化。最后调用myDao中的DaoInsert方法,完成了将values数据的插入。
运行展示截图
点击button按钮即可实现数据在表中的插入功能。