Скопировать базу данных за пределы APK - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь скопировать базу данных из папки активов, но, к сожалению, у меня появляется ошибка: System.UnauthorizedAccessException: 'Доступ к пути "/storage/emulated/0/Northwind.sqlite" запрещен. " Я добавил Runtime Permission. Не могли бы вы сказать мне, что я делаю не так? Ниже мой исходный код:

 string dbName = "Northwind.sqlite";
        string dbPath = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.ToString(), dbName);
        // Check if your DB has already been extracted.
        if (!File.Exists(dbPath))
        {
            using (BinaryReader br = new BinaryReader(Android.App.Application.Context.Assets.Open(dbName)))
            {
                using (BinaryWriter bw = new BinaryWriter(new FileStream(dbPath, FileMode.Create)))
                {
                    byte[] buffer = new byte[2048];
                    int len = 0;
                    while ((len = br.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        bw.Write(buffer, 0, len);
                    }
                }
            }
        }

1 Ответ

0 голосов
/ 21 февраля 2020

Вы можете следовать приведенным ниже инструкциям. Это хорошо работает на моей стороне.

Моя база данных в папке Assets.

enter image description here

Установить действие сборки как AndroidAssect.

enter image description here

Вы Можно использовать следующий код для копирования файла из папки Assects в Android папку приложения

// Android папку приложения по умолчанию. var dbFile = GetDefaultFolderPath ();

        // Check if the file already exists.
        if (!File.Exists(dbFile))
        {
            using (FileStream writeStream = new FileStream(dbFile, FileMode.OpenOrCreate, FileAccess.Write))
            {
                // Assets is comming from the current context.
                await Assets.Open(databaseName).CopyToAsync(writeStream);
            }
        }

Загрузите исходный файл по ссылке ниже. https://github.com/damienaicheh/CopyAssetsProject

...