是否可以在Xamarin.Android中将文件复制到USB驱动器?

时间:2019-08-28 11:29:24

标签: xamarin.android

如何通过编程方式将文件从手机的内部存储器传输到USB驱动器?我没有获取外部目录所需的代码。

Caused by: org.hibernate.DuplicateMappingException: Table [coupons] contains physical column name [coup_id] referred to by multiple physical column names: [coupId], [coup_id]

上面发布的代码仅获取SD卡位置。如何访问USB驱动器?

1 个答案:

答案 0 :(得分:1)

  

如何访问USB驱动器?

您可以注册广播以用于外部存储设备的即插即用:

Intent.ACTION_MEDIA_MOUNTED 
Intent.ACTION_MEDIA_REMOVED 

UsbReceiver:

class USBReceiver : BroadcastReceiver
    {
        public override void OnReceive(Context context, Intent intent)
        {
            string action = intent.Action;
            if (action.Equals(Intent.ActionMediaMounted))
            {
                string mountPath = intent.Data.Path;
            }
        }
    }

代码段:

UsbManager manager = (UsbManager)_mainActivity.GetSystemService(Context.UsbService);
var deviceList = manager.DeviceList;
IEnumerable<UsbDevice> deviceIterator = deviceList.Values.AsEnumerable();

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

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

    UsbManager mUsbManager = (UsbManager)_mainActivity.GetSystemService(Context.UsbService);
    mUsbManager.RequestPermission(device, mPermissionIntent);

    bool perm = mUsbManager.HasPermission(device);
    if (perm)
      {
       //File Copy
       File.Copy(FileNameSource, FileNameDestination);
      }
 }
相关问题