我正在编写一个在USB主机模式下工作的Android应用程序,用于读取连接的USB存储设备中的数据。
当USB存储首次连接到Android设备时,Android系统会自动安装(稍后可以在系统设置 - >存储和USB 中访问)。
然后我的应用程序请求使用Android USB主机API独占访问USB存储。由于是独家访问,Android系统将播放 ACTION_MEDIA_REMOVED 事件,除了我的应用程序之外,没有人可以访问USB存储设备。
在我的应用程序执行我想要的USB存储器之后,我将控制器发布到Android系统。但Android系统不再自动挂载它。我必须插入并重新插入USB设备,让Android系统安装USB设备。
所以我的问题是,有什么方法可以触发Android系统以编程方式重新安装USB存储器吗?
答案 0 :(得分: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);
}
}