在许多Android设备上,当设备插入计算机的USB端口或某些USB充电设备时,手机会进入USB存储模式。设备处于此模式时,Android应用程序无法访问SD卡。有没有办法(1)检测设备何时处于此模式并(2)编程方式关闭USB存储器,至少是暂时地,以便我的Android应用程序可以访问SD卡?
我看到过其他SO问题,答案并不真正足够(例如,Android:检测USB)。
在许多Android设备上,当设备插入计算机的USB端口或某些USB充电设备时,手机会进入USB存储模式。设备处于此模式时,Android应用程序无法访问SD卡。有没有办法(1)检测设备何时处于此模式并(2)编程方式关闭USB存储器,至少是暂时地,以便我的Android应用程序可以访问SD卡?
我看到过其他SO问题,答案并不真正足够(例如,Android:检测USB)。
A1:如果SD卡的当前状态为SHARED,这意味着它已经连接到PC以MSC模式进行连接。您可以按照以下步骤检查此情况:
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();
你可以检测到它(因为你有链接),但据我所知,至少不能用公共SDK API挂载/卸载USB存储。在蜂巢(3.0及以上版本)中,不再使用USB大容量存储器来访问设备的外部存储,因此你的应用程序和电脑可以同时访问它。