16

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

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

4

2 回答 2

7

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 都不能公开访问?!

于 2012-04-14T12:36:23.807 回答
4

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

于 2011-09-13T05:21:09.083 回答