Android到Windows USB文件传输文件丢失

时间:2018-10-23 19:43:46

标签: android windows file xamarin.android usb

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

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

我的问题如下

  • 这是一个已知问题吗?
  • 我可以在我的应用中执行任何操作以确保文件在写入后立即可见吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

  1. 当android设备连接到计算机时,PC无法读取 设备的磁盘文件数据。它是通过MTP服务映射的。
  2. 媒体数据库中Android的数据源Provider的映射: com.android.provider.media/databases/external.db。在此数据库中, 有一个文件表。在此表中,所有记录将通过以下方式映射 将MTP服务发送到PC的文件管理器。

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

因此,您可以指定文件的路径,然后将其记录到外部存储中,然后再由系统扫描并与PC同步。请使用mtehod MediaScannerConnection。 Xamarin.Android有相应的方法。有关更多详细信息,请参阅here