【问题标题】:Can't find path on android在android上找不到路径
【发布时间】: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/…

标签: c# android xamarin path


【解决方案1】:

我使用这个实现:

    public SQLiteAsyncConnection GetConnection()
    {
        var fileName = "DatabaseName.db3";
        var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
        var path = Path.Combine(documentsPath, fileName);

        var connection = new SQLiteAsyncConnection(path);

        return connection;
    }

然后我将使用Android Device Monitor 和内部的File Explorer 获取.db3 文件。然后,您可以使用 http://sqlitebrowser.org/ 或其他支持 SQLite 的浏览器打开该 .db3 文件。 请注意:在Emulator 上最简单,因为如果没有 root 用户,从物理设备中提取文件可能会非常麻烦。

  1. 打开Tools -> Android -> Android Device Monitor:

  1. Debug 模式下运行您的应用程序
  2. Devices 部分选择您的设备:

  1. 通过Save Icondata/data/com.mypackage.name/files拉取你的.db3文件:

  1. 在 SQLite 浏览器中打开 .db3 文件

【讨论】:

    猜你喜欢
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    相关资源
    最近更新 更多