在许多Android设备上,当设备插入计算机的USB端口或甚至某些USB充电设备时,手机将进入USB存储模式。当设备处于此模式时,Android应用程序无法访问SD卡。是否有任何方法(1)检测设备何时处于此模式;(2)以编程方式关闭USB存储,至少是暂时的,以便我的Android应用程序可以访问SD卡?
我已经看过其他SO问题了,答案还不够 (例如,Android: Detecting USB)。
答案 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。如果有人这样做,请提出建议