无法访问 Android 模拟器上的数据目录

Posted

技术标签:

【中文标题】无法访问 Android 模拟器上的数据目录【英文标题】:Cannot get access to data directory on Android emulator 【发布时间】:2019-10-17 20:27:56 【问题描述】:

我正在使用 Visual Studio 和 xamarin,但我无法访问数据目录来检索我的数据库以供检查我正在通过以下方式将数据库保存到设备以进行写访问。

我使用的是标准的 stk 7 andriod 手机,它没有植根,也不能植根于我的测试设备,但在模拟过程中,我使用的是带有 Visual Studio 和 xamarin 的 android 模拟器

public async Task<Boolean> copydb()

    DatabasePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), DatabaseName);
    string sdCardPath = @"/sdcard/" + DatabaseName;

    if (!File.Exists(DatabasePath))
    
        using (var assetStream = await Xamarin.Essentials.FileSystem.OpenAppPackageFileAsync(DatabaseName))
        using (var fileStream = new FileStream(DatabasePath, FileMode.Create, FileAccess.Write))
        
            assetStream.CopyTo(fileStream);
        
    

正如您在下面看到的,我上面所说的路径是个人文件夹,即使在模拟器上,我也无法使用安卓监视器导航到数据目录。

我无法点击显示器右侧的数据文件夹,我可以访问其他目录,只是没有数据。

我正在使用 xamarin 表单和 c#

public FuelStockDatabase()

    Task.Run(() => this.copydb()).Wait();

    dataTransfer = new FuelStockTakeDT();
    DatabaseName = "FuelStockApp31.db";
    DatabasePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), DatabaseName);

【问题讨论】:

将数据库保存/复制到应用程序的“外部数据”目录(***.com/questions/54126671/…),您将能够从该位置adb pull 文件或使用根模拟器图像(即那些未安装 Google 应用) @SushiHangover 好的,我明白了,但是我如何访问我在表单应用程序中从我的 xaml 创建的外部数据库路径 @SushiHangover 我最终使用 xamrian 设置为 c-sharpcorner.com/article/… 【参考方案1】:

您可能必须根设备。我正在使用 Total Commander adb 插件扩展,它工作正常。你必须导航到android工具文件夹的根文件夹,在那里打开一个cmd,写“adb root”并按回车。

它也应该适用于您的方法,转到数据文件夹,它将显示数据文件夹的内容。

【讨论】:

以上是关于无法访问 Android 模拟器上的数据目录的主要内容,如果未能解决你的问题,请参考以下文章

我的电脑通过 *** 连接,Android 模拟器无法访问本地 Intranet 站点

无法在模拟器上的 /storage/emulated/0 上创建目录

Sqlite 错误无法打开数据库文件

Android Device Monitor中File Explorer无法获取文件目录问题

解决主机无法通过网络访问虚拟机的问题

无法在android studio中的android模拟器中访问互联网