首页 > 解决方案 > Android 到 Windows USB 文件传输文件丢失

问题描述

我最近创建了一个将数据记录到外部存储的应用程序(也就是说 myFilePath = Environment.getExternamStorageDirectory().toString() + "mypath/thisCollectionsFolder/myfile.data")。当我通过 airdroid 或 es 文件资源管理器查找文件时,我可以在完成录制后找到它。但是,如果我通过 USB 将手机插入 Windows PC 并导航到 mypath,我暂时无法在资源管理器中看到“thisCollectionsFolder”。如果我让手机“休息”一会儿,我就可以看到“thisCollectionFolder”。有时“myfile.data”在“thisCollectionFolder”中可见,有时我必须让手机“休息”一段时间才能看到它。

我在 Nexus 6p 和 Pixel 2 上观察到了这种行为,它们都在两台不同的 Windows PC 上运行 android 8。写入文件后,我尝试重新启动手机,但这不会使其在资源管理器中可见。请注意,我的应用程序是使用 Xamarin 编写的,并且我使用 dotnet System.IO 类进行编写。

我的问题如下

谢谢!

标签: androidwindowsfilexamarin.androidusb

解决方案


  1. 安卓设备连接电脑时,电脑不会读取设备的磁盘文件数据。它通过 MTP 服务映射。
  2. Android的数据源Provider在一个媒体数据库中的映射:com.android.provider.media/databases/external.db。在这个数据库中,有一个files表。在这个表中,所有的记录都会被 MTP 服务映射到 PC 的文件管理器中。

  3. 同时,我们在PC上所做的修改也是先对服务器中的files表进行了修改,然后才会触发系统的磁盘操作。

因此,您可以指定文件的路径,然后系统会扫描该文件,然后将数据记录到外部存储后同步到PC。使用 mtehod MediaScannerConnection。Xamarin.Android 有相应的方法。有关更多详细信息,您可以参考此处


推荐阅读