我最近创建了一个将数据记录到外部存储的应用程序(也就是说,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类进行编写。
我的问题如下
谢谢!
答案 0 :(得分:1)
媒体数据库中Android的数据源Provider的映射: com.android.provider.media/databases/external.db。在此数据库中, 有一个文件表。在此表中,所有记录将通过以下方式映射 将MTP服务发送到PC的文件管理器。
同时,我们也在PC上对服务器中的文件表进行了修改,然后才触发系统的磁盘操作。
因此,您可以指定文件的路径,然后将其记录到外部存储中,然后再由系统扫描并与PC同步。请使用mtehod MediaScannerConnection
。 Xamarin.Android有相应的方法。有关更多详细信息,请参阅here。