Для некоторых я использую плагин sqlite-net-pcl, но теперь для магазина воспроизведения требуется приложение как минимум для Android версии 7.
Когда я нацелен на это (Целевые версии Android - 7.1), приложение не может открыть / создать базу данных, она работает только для более низкой версии Android, такой как 5. Я знаю, что это могли быть изменения безопасности, которые могли вызвать это, но я понятия не имею, как с этим справиться.
Я получаю путь к данным для Android, вот так Path.Combine(global::Android.OS.Environment.ExternalStorageDirectory.Path, filename);
Затем при запуске мое приложение пытается открыть соединение с базой данных вот так
string dbPath = DependencyService.Get<IFileHelper>().GetLocalFilePath("myDbName.db3");
var conn = new SQLiteAsyncConnection(dbPath);
Я хочу использовать SQLiteAsyncConnection
, поскольку он обрабатывает блокировки таблицы.
Исключение составляют:
Необработанное исключение:
SQLite.SQLiteException: Could not open database file: /storage/emulated/0/myDbName.db3 (CannotOpen)
Я также удостоверился, что у меня отмечены флажки чтения и записи для разрешения внешнего хранилища. Я использую плагин https://github.com/praeclarum/sqlite-net, который это то, что формы xamarin рекомендуют в своей документации.
await
able? (ждет, пока пользователь удовлетворит или отклонит запрос?) 16.10.2018await
able, так как код должен ждать, пока пользователь предоставит / отклонит разрешения. Здесь вы можете найти пример реализации: github.com/jamesmontemagno/PermissionsPlugin#in-action. Вам просто нужно поставить необходимые вам разрешения (в вашем случае Хранилище). Не забудьте проверить, что разрешение было предоставлено, прежде чем пытаться получить доступ к каким-либо файлам / папкам! 17.10.2018