无法在Android上找到路径

时间:2016-11-04 15:54:38

标签: c# android xamarin path

我现在已经找了差不多一天了,这件事让我发疯了。

我正在尝试打开与SQLite DB的连接,我从windows推送到设备。

数据库现在位于此路径中:

  

电话/ Android设备/数据/ MyApp.Droid /文件/ MyDB.db3

可以在没有' Phone / 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访问的位置,而无需使设备生根。

任何人都可以向我解释为什么它找不到路径/文件,如果可能的话告诉我如何阅读该位置?

  

注意:我无法访问任何' Environment.SpecialFolder'从windows看起来这给了我一条路径:data / user / 0 / MyApp.Droid / files /

此致,

1 个答案:

答案 0 :(得分: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;
    }

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

  1. 打开Tools -> Android -> Android Device Monitor
  2. enter image description here

    1. Debug模式
    2. 运行您的应用程序
    3. Devices部分中选择您的设备:
    4. enter image description here

      1. 通过.db3
      2. data/data/com.mypackage.name/files提取Save Icon个文件

        enter image description here

        1. 在SQLite浏览器中打开.db3文件
        2. enter image description here