【发布时间】:2016-11-04 15:54:37
【问题描述】:
我已经搜索了将近一天,这件事让我发疯了。
我正在尝试打开与我从 Windows 推送到设备的 SQLite DB 的连接。
数据库现在位于此路径内:
手机/Android/data/MyApp.Droid/files/MyDB.db3
我认为可以在没有“手机/Android”的情况下阅读。
当我尝试与数据库建立连接时,我似乎找不到路径。
这是我检索路径和创建连接的代码。
public SQLite.SQLiteConnection GetConnection()
{
var sqliteFile = "MyDB.db3";
var dataPath = global::Android.OS.Environment.DataDirectory.AbsolutePath;
var dataPathExtension = @"MyApp.Droid/files";
var destination = Path.Combine(dataPath, dataPathExtension, sqliteFile);
//this outputs the following: /data/MyApp.Droid/files/MyDB.db3
//When I check my phone this is exactly when I can find the file.
return new SQLite.SQliteConnection(destination);
//It can't find the path/file.
}
数据库需要位于我可以从 Windows 访问而无需 root 设备的位置。
谁能向我解释为什么它找不到路径/文件,如果可能的话告诉我如何读取位置?
注意:我似乎无法从 Windows 访问任何“Environment.SpecialFolder”,因为这给了我这样的路径:data/user/0/MyApp.Droid/files/
你的,
【问题讨论】:
-
Android 以许多奇怪的方式存储文件。您应该查看“Android 解析文件路径”或类似的内容。根据您的 android 版本、文件类型等,这会有所不同。或者您很幸运,只是忘记将其存储在 ExternalStorage 中并检查权限(可以是内部的,外部并不意味着 SD 卡,因为......谷歌不关心逻辑)
-
您必须将数据库文件存储在应用程序的沙箱之外,下载目录、sdcard 等。stackoverflow.com/questions/5858107/…