【问题标题】:External storage files not visible to laptop over USB通过 USB 对笔记本电脑不可见的外部存储文件
【发布时间】:2020-11-28 12:46:15
【问题描述】:

在 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;
                }
            });
        }

【问题讨论】:

  • GetExternalFilesDir(null) 同理,说明与文件夹和子文件夹的文件访问权限无关。

标签: xamarin.forms xamarin.android android-external-storage


【解决方案1】:

经过多次重启/重启后,它现在可以工作了。对不起。

【讨论】:

  • 感谢分享。不要忘记接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 2011-01-14
  • 1970-01-01
相关资源
最近更新 更多