Xamarin Android:在 U 盘上读取和写入文件

Xamarin Android : Read and write files on USB stick

提问人:DevAct 提问时间:10/11/2017 最后编辑:DevAct 更新时间:4/6/2019 访问量:1445

问:

我有一个 Xamarin Android 应用程序(目标框架 Android 7.1 (Nougat)),具有 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE权限,我想在 U 盘上读取和写入文件。

我阅读了 proc/mounts 系统文件以查找我的 U 盘的音量(如本线程所述:如何获取 android 设备的已挂载外部存储列表),但是当我尝试将文件写入 U 盘时,我收到“拒绝访问”异常。

那么我的问题是,是否可以在连接的 U 盘中读取和写入文件,如果是这样,我该怎么做?

这是我用来请求访问 U 盘权限的代码:

            UsbManager usbManager = (UsbManager)Global.MyActivity.GetSystemService(Context.UsbService);
            var deviceList = usbManager.DeviceList;
            IEnumerable<UsbDevice> deviceIterator = deviceList.Values.AsEnumerable();

            if (deviceIterator.Count() > 0)
            {
                var device = deviceIterator.ElementAt(0);

                string ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION";
                var mPermissionIntent = PendingIntent.GetBroadcast(Global.MyActivity.ApplicationContext, 0, new Intent(ACTION_USB_PERMISSION), 0);

                usbManager.RequestPermission(device, mPermissionIntent);
            }
C# Android Xamarin USB

评论

0赞 Grace Feng 10/12/2017
你能出示你的代码吗?
0赞 DevAct 10/12/2017
我的代码与我正在谈论的线程中的代码类似(除了我的代码是 C#),为了请求访问 U 盘的权限,我使用我添加到问题中的一段代码。

答:

0赞 Mohammad Nikravan 4/6/2019 #1

最好的方法是使用 Android 存储访问框架 (SAF):

我开发了一个免费代码来克服这个问题:https://github.com/madnik7/PortableStorage