Android11更新后,如何在没有外部存储权限的情况下将SQLite数据库转移到另一个设备上?
创始人
2024-08-20 10:30:12
0

在Android 11及以上的设备上,由于Google限制了对外部存储的访问权限,我们需要使用特殊的应用程序间共享方法来进行数据库传输。以下是一种可能的解决方案,其使用ContentProvider进行数据共享。

在发送设备中的应用程序中,需要创建一个ContentProvider类来使另一个设备的应用程序访问数据库。以下是一个示例ContentProvider类:

public class MyContentProvider extends ContentProvider {
    private MyDBHelper mDBHelper;
    @Override
    public boolean onCreate() {
        Context context = getContext();
        mDBHelper = new MyDBHelper(context);
        return true;
    }
    @Nullable
    @Override
    public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
        SQLiteDatabase db = mDBHelper.getReadableDatabase();
        Cursor cursor = db.query(MyDBHelper.TABLE_NAME,projection,selection,selectionArgs,null,null,sortOrder);
        cursor.setNotificationUri(getContext().getContentResolver(),uri);
        return cursor;
    }
    @Nullable
    @Override
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
        SQLiteDatabase db = mDBHelper.getWritableDatabase();
        long id = db.insert(MyDBHelper.TABLE_NAME,null,values);
        if(id != -1){
            getContext().getContentResolver().notifyChange(uri,null);
            return ContentUris.withAppendedId(uri,id);
        }
        return null;
    }
    ...
    //其他ContentProvider方法
}

在另一个设备的应用程序中,您可以使用ContentResolver来访问ContentProvider并进行数据库操作。以下是一个示例:

public class MyActivity extends AppCompatActivity {
    private static final String AUTHORITY = "com.example.mycontentprovider";
    private static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + MyDBHelper.TABLE_NAME);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

相关内容

热门资讯

两分钟辅助挂!新蜜瓜牛牛辅助器... 两分钟辅助挂!新蜜瓜牛牛辅助器(辅助挂)详细辅助软件教程(2020已更新)(微博热搜)1、打开软件启...
三分钟辅助挂!小鸟历险记广元长... 三分钟辅助挂!小鸟历险记广元长牌外挂(辅助挂)详细辅助攻略教程(2020已更新)(抖音)一、小鸟历险...
六分钟辅助挂!葫芦娃捉鸡有挂么... 六分钟辅助挂!葫芦娃捉鸡有挂么(辅助挂)详细辅助黑科技教程(2022已更新)(知乎)1、构建自己的葫...
8分钟辅助挂!微信欢乐口袋小程... 8分钟辅助挂!微信欢乐口袋小程序可靠吗(透视)详细辅助器教程(2025已更新)(抖音);1、起透看视...
2分钟辅助挂!江西中至棋牌有挂... 2分钟辅助挂!江西中至棋牌有挂吗(透视)详细辅助脚本教程(2021已更新)(头条);1、江西中至棋牌...
八分钟辅助挂!星悦麻将有挂吗2... 八分钟辅助挂!星悦麻将有挂吗2020(透视)详细辅助插件教程(2023已更新)(抖音)一、星悦麻将有...
六分钟辅助挂!打牌传送屋高仿版... 六分钟辅助挂!打牌传送屋高仿版外挂(辅助挂)详细辅助器教程(2025已更新)(抖音)亲,关键说明,打...
7分钟辅助挂!微信卡五星辅助器... 7分钟辅助挂!微信卡五星辅助器(透视)详细辅助插件教程(2022已更新)(哔哩哔哩)亲,关键说明,微...
3分钟辅助挂!中至窝龙全托辅助... 3分钟辅助挂!中至窝龙全托辅助(辅助挂)详细辅助安装教程(2022已更新)(头条)1、中至窝龙全托辅...
5分钟辅助挂!胡麻麻将辅牌器怎... 5分钟辅助挂!胡麻麻将辅牌器怎么下载(辅助挂)详细辅助插件教程(2024已更新)(百度)1、胡麻麻将...