以编程方式关闭Android设备上的USB存储

时间:2011-09-13 04:18:59

标签: java android usb-mass-storage

在许多Android设备上,当设备插入计算机的USB端口或甚至某些USB充电设备时,手机将进入USB存储模式。当设备处于此模式时,Android应用程序无法访问SD卡。是否有任何方法(1)检测设备何时处于此模式;(2)以编程方式关闭USB存储,至少是暂时的,以便我的Android应用程序可以访问SD卡?

我已经看过其他SO问题了,答案还不够 (例如,Android: Detecting USB)。

3 个答案:

答案 0 :(得分:6)

A1:如果Sd卡的当前状态为SHARED,则表示已在MSC模式下连接到PC,您可以查看以下情况:

String state = Environment.getExternalStorageState();
if (Environment.MEDIA_SHARED.equals(state)) {
    // Sd card has connected to PC in MSC mode
}

A2:您可以通过调用以下命令强制关闭USB大容量存储连接:

MountService.setUsbMassStorageEnabled(false);

StorageManager.disableUsbMassStorage();

但遗憾的是,这两个API都无法公开访问?!

答案 1 :(得分:4)

您可以检测到它(您有链接),但是,AFAIK,您无法安装/卸载USB存储,至少不能使用公共SDK API。在Honeycomb(3.0及以上版本)中,USB大容量存储不再用于访问设备的外部存储,因此您的应用程序和计算机可以同时访问它。

答案 2 :(得分:0)

它通过在storageManger api上使用反射来阻止大容量存储。 Storage Manager api可从sdk级别-9获得。

我无法反映可以降低操作系统级别的Mountservice api。如果有人这样做,请提出建议