以编程方式弹出/卸载USB

问题描述

我正在Xamarin中开发一个Android应用程序,在这里我可以收听通过OTG连接到我的Android设备的USB设备。我已成功收听了通过broadcastReceiver连接到我的Android设备的USB设备。

我被困在2个地方:

  1. 我一知道设备已连接,就想 以编程方式断开连接。这是出于安全原因。

  2. 尽管我能够检测到USB设备,但接收器似乎可以 已经全球化。也就是说,即使我的应用未在 如果我通过OTG连接USB设备, broadcastReceiver收听它。我不希望那样发生。

搜索了很多站点,但是找不到有关以编程方式弹出/卸载的帮助。

这是我到目前为止所做的:

   UsbDetection usbDetection;

    protected async override void OnCreate(Bundle savedInstanceState)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;

        base.OnCreate(savedInstanceState);

        usbDetection = new UsbDetection();

        IntentFilter filter = new IntentFilter("android.hardware.usb.action.USB_STATE");
        RegisterReceiver(usbDetection,filter);

        Xamarin.Essentials.Platform.Init(this,savedInstanceState);
        global::Xamarin.Forms.Forms.Init(this,savedInstanceState);
        LoadApplication(new App());
    }

[broadcastReceiver(Enabled = true,Exported = false)]

[Android.App.IntentFilter(actions:new [] {“ android.hardware.usb.action.USB_STATE”, “ android.hardware.usb.action.USB_DEVICE_ATTACHED”, “ android.hardware.usb.action.USB_DEVICE_DETACHED”})]

public class UsbDetection : broadcastReceiver
{
    public override void OnReceive(Context context,Intent intent)
    {
        string action = intent.Action;
        Console.WriteLine(action);
        Toast.MakeText(Android.App.Application.Context,action,ToastLength.Long).Show();

        if(action.Equals("android.hardware.usb.action.USB_DEVICE_ATTACHED"))
        {
            UsbDevice device = (UsbDevice)intent.GetParcelableExtra(UsbManager.ExTradevice);

            if(device!=null)
            {
                Programmatically eject/unmount the usb device. 
            }
        }
    }
}

关于此的任何建议都会有所帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)