Android Studio数据库共享实战:用内容提供器实现应用间数据交互

本教程将通过一个完整的Android Studio实战案例,带你学习如何使用内容提供器(Content Provider)在两个应用程序之间共享SQLite数据库数据。

一、案例场景

我们需要创建两个应用程序:应用A和应用B。

  • 应用A:拥有一个SQLite数据库,其中包含一个图书表,表字段包括:书名、作者、页数、价格。应用A需要提供内容提供器接口,允许其他应用访问其数据库的图书表数据。* 应用B:通过应用A提供的内容提供器接口,对应用A的数据库图书表进行增删改查操作,并将操作结果实时显示在界面上,可使用ListView或RecyclerView展示。

二、实验要求

  1. 应用A: * 界面包含操作按钮,实现对数据库图书表的增删改查操作。 * 操作结果以Log日志的形式输出。2. 应用B: * 界面包含操作按钮,实现对应用A数据库图书表的增删改查操作。 * 操作结果实时显示在ListView或RecyclerView上。

三、主要知识点

  • Activity* SQLite数据库* 内容提供器(Content Provider)

四、代码实现

应用A代码

  1. AndroidManifest.xml:添加权限和内容提供器声明xml
  1. 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) // 代码与原文相同,省略注释,避免重复}

  2. BookDatabaseHelper.java:创建和更新数据库javapublic class BookDatabaseHelper extends SQLiteOpenHelper { // ... 代码与原文相同,省略注释,避免重复}

  3. MainActivity.java:实现数据库操作javapublic class MainActivity extends AppCompatActivity { // ... 代码与原文相同,省略注释,避免重复}

应用B代码

  1. AndroidManifest.xml:添加权限xml

  2. BookAdapter.java:用于RecyclerView显示图书列表javapublic class BookAdapter extends RecyclerView.Adapter<BookAdapter.ViewHolder> { // ... 代码与原文相同,省略注释,避免重复}

  3. MainActivity.java:实现数据库操作,并将结果显示在RecyclerView上javapublic class MainActivity extends AppCompatActivity { // ... 代码与原文相同,省略注释,避免重

Android Studio数据库共享实战:用内容提供器实现应用间数据交互

原文地址: https://www.cveoy.top/t/topic/fhCC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录