Android Studio数据库共享实战:用内容提供器实现应用间数据交互
Android Studio数据库共享实战:用内容提供器实现应用间数据交互
本教程将通过一个完整的Android Studio实战案例,带你学习如何使用内容提供器(Content Provider)在两个应用程序之间共享SQLite数据库数据。
一、案例场景
我们需要创建两个应用程序:应用A和应用B。
- 应用A:拥有一个SQLite数据库,其中包含一个图书表,表字段包括:书名、作者、页数、价格。应用A需要提供内容提供器接口,允许其他应用访问其数据库的图书表数据。* 应用B:通过应用A提供的内容提供器接口,对应用A的数据库图书表进行增删改查操作,并将操作结果实时显示在界面上,可使用ListView或RecyclerView展示。
二、实验要求
- 应用A: * 界面包含操作按钮,实现对数据库图书表的增删改查操作。 * 操作结果以Log日志的形式输出。2. 应用B: * 界面包含操作按钮,实现对应用A数据库图书表的增删改查操作。 * 操作结果实时显示在ListView或RecyclerView上。
三、主要知识点
- Activity* SQLite数据库* 内容提供器(Content Provider)
四、代码实现
应用A代码
- AndroidManifest.xml:添加权限和内容提供器声明xml
-
BookProvider.java:实现内容提供器javapublic class BookProvider extends ContentProvider { private static final String TAG = 'BookProvider';
private static final String AUTHORITY = 'com.example.appa.bookprovider'; private static final String BOOK_TABLE = 'book';
private static final UriMatcher uriMatcher; private static final int BOOK_URI_CODE = 1;
private static final String CONTENT_TYPE = 'vnd.android.cursor.dir/vnd.com.example.appa.book'; private static final String CONTENT_ITEM_TYPE = 'vnd.android.cursor.item/vnd.com.example.appa.book';
private static final UriMatcher sUriMatcher; private static final int BOOKS = 1; private static final int BOOK_ITEM = 2;
private static final String CREATE_BOOK_TABLE = 'create table if not exists ' + BOOK_TABLE + '(_id integer primary key autoincrement, name text, author text, pages integer, price real)';
private SQLiteDatabase mDatabase;
static { uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); uriMatcher.addURI(AUTHORITY, BOOK_TABLE, BOOK_URI_CODE);
sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH); sUriMatcher.addURI(AUTHORITY, 'book', BOOKS); sUriMatcher.addURI(AUTHORITY, 'book/#', BOOK_ITEM); }@Override public boolean onCreate() { mDatabase = new BookDatabaseHelper(getContext()).getWritableDatabase(); return true; }
// ... 其他方法(query, getType, insert, delete, update) // 代码与原文相同,省略注释,避免重复}
-
BookDatabaseHelper.java:创建和更新数据库javapublic class BookDatabaseHelper extends SQLiteOpenHelper { // ... 代码与原文相同,省略注释,避免重复}
-
MainActivity.java:实现数据库操作javapublic class MainActivity extends AppCompatActivity { // ... 代码与原文相同,省略注释,避免重复}
应用B代码
-
AndroidManifest.xml:添加权限xml
-
BookAdapter.java:用于RecyclerView显示图书列表javapublic class BookAdapter extends RecyclerView.Adapter<BookAdapter.ViewHolder> { // ... 代码与原文相同,省略注释,避免重复}
-
MainActivity.java:实现数据库操作,并将结果显示在RecyclerView上javapublic class MainActivity extends AppCompatActivity { // ... 代码与原文相同,省略注释,避免重
原文地址: https://www.cveoy.top/t/topic/fhCC 著作权归作者所有。请勿转载和采集!