笔记本电脑通过 USB 看不到外部存储文件
External storage files not visible to laptop over USB
在 Android 应用程序 (API 29) 中,我正在编写一个需要通过 USB 从笔记本电脑读取的文件。它被写入模拟的外部存储。正如预期的那样,在物理设备上的 Android 文件管理器中,我看到文件位于:
Internal Storage > Android > data > com.xxx.myapp > files > Directory Documents >
Exports > Databases > my file.dbf
但是,在连接 USB 的笔记本电脑上,我使用 Android 文件传输(甚至 Android Studio 的设备文件资源管理器)看不到该文件。我确实在以下位置看到了私人文件:
Internal Storage > Android > data > data > com.xxx.myapp > files > ...
在应用设置中启用了存储权限,在开发者设置中启用了 USB 调试。
虽然这显然不是必需的,但我也启用了清单设置 ReadExternalStorage 和 WriteExternalStorage。
我必须怎么做才能让笔记本电脑看到该文件?
我的代码如下(在 Xamarin Android 依赖服务中)。
public async Task WriteExternalFileFromStreamAsync ( string foldername, string subfoldername, string filename, Stream stream )
// Writes external file from given stream
{
await Task.Run ( () =>
{
try
{
// Create folder
Context currentContext = Android.App.Application.Context;
Java.IO.File directory = new Java.IO.File ( currentContext.GetExternalFilesDir( "directorydocuments" ).AbsolutePath + "/" + foldername );
directory.Mkdir ();
// Create subfolder
Java.IO.File subdirectory = new Java.IO.File ( currentContext.GetExternalFilesDir( "directorydocuments" ).AbsolutePath + "/" + foldername + "/" + subfoldername );
subdirectory.Mkdir ();
// Write file
string path = Path.Combine ( subdirectory.AbsolutePath, filename );
using ( FileStream filestream = new FileStream ( path, FileMode.Create, FileAccess.ReadWrite ) )
stream.CopyTo ( filestream );
}
catch ( Exception ex )
{
MyUtil.WriteLogFile ( S.Exception, ex.AsStringVal () );
throw;
}
});
}
在多次重新启动/重启后,它现在可以正常工作了。对不起。
在 Android 应用程序 (API 29) 中,我正在编写一个需要通过 USB 从笔记本电脑读取的文件。它被写入模拟的外部存储。正如预期的那样,在物理设备上的 Android 文件管理器中,我看到文件位于:
Internal Storage > Android > data > com.xxx.myapp > files > Directory Documents >
Exports > Databases > my file.dbf
但是,在连接 USB 的笔记本电脑上,我使用 Android 文件传输(甚至 Android Studio 的设备文件资源管理器)看不到该文件。我确实在以下位置看到了私人文件:
Internal Storage > Android > data > data > com.xxx.myapp > files > ...
在应用设置中启用了存储权限,在开发者设置中启用了 USB 调试。
虽然这显然不是必需的,但我也启用了清单设置 ReadExternalStorage 和 WriteExternalStorage。
我必须怎么做才能让笔记本电脑看到该文件?
我的代码如下(在 Xamarin Android 依赖服务中)。
public async Task WriteExternalFileFromStreamAsync ( string foldername, string subfoldername, string filename, Stream stream )
// Writes external file from given stream
{
await Task.Run ( () =>
{
try
{
// Create folder
Context currentContext = Android.App.Application.Context;
Java.IO.File directory = new Java.IO.File ( currentContext.GetExternalFilesDir( "directorydocuments" ).AbsolutePath + "/" + foldername );
directory.Mkdir ();
// Create subfolder
Java.IO.File subdirectory = new Java.IO.File ( currentContext.GetExternalFilesDir( "directorydocuments" ).AbsolutePath + "/" + foldername + "/" + subfoldername );
subdirectory.Mkdir ();
// Write file
string path = Path.Combine ( subdirectory.AbsolutePath, filename );
using ( FileStream filestream = new FileStream ( path, FileMode.Create, FileAccess.ReadWrite ) )
stream.CopyTo ( filestream );
}
catch ( Exception ex )
{
MyUtil.WriteLogFile ( S.Exception, ex.AsStringVal () );
throw;
}
});
}
在多次重新启动/重启后,它现在可以正常工作了。对不起。