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

2022-09-03 07:38:38

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

我见过其他SO问题,答案并不充分(例如,Android:检测USB)。


答案 1

A1:如果SD卡的当前状态为“共享”,则表示它已在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都不能公开访问?!


答案 2

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


推荐