如何以编程方式强制USB设备扫描?

问题描述 投票:1回答:1

我正在编写一个在USB主机模式下工作的Android应用程序,以从连接的USB存储设备中读取数据。

当USB存储设备首次连接到Android设备时,Android系统将自动安装它(以后可以在系统设置->存储和USB中进行访问。

然后我的应用程序请求使用Android USB主机API独占访问USB存储设备。由于是专有访问,因此Android系统将广播ACTION_MEDIA_REMOVED事件,除我的应用程序外,没有人可以访问USB存储设备。

我的应用程序完成了对USB存储设备的操作后,我将控件释放到Android系统。但是Android系统不会再自动安装它。我必须拔出并重新插入USB设备,才能让Android系统挂载USB设备。

所以我的问题是,有什么方法可以触发Android系统以编程方式重新安装USB存储设备?

android usb
1个回答
0
投票

如果设备已植根,则可以这样操作:

    private void replugUsb() {
        Log.d(APP_TAG, "replugUsb()");
        try{

            Process su = Runtime.getRuntime().exec("su");
            DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());

            outputStream.writeBytes("echo 0 > /sys/bus/usb/devices/usb1/authorized\n");
            outputStream.flush();

            outputStream.writeBytes("echo 1 > /sys/bus/usb/devices/usb1/authorized\n");
            outputStream.flush();

            outputStream.writeBytes("exit\n");
            outputStream.flush();

            su.waitFor();
        }catch(IOException | InterruptedException e){
            Log.e(APP_TAG, "replugUsb: failed", e);
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.