在许多安卓设备上,当设备插入计算机的 USB 端口甚至某些 USB 充电设备时,手机会进入 USB 存储模式。当设备处于此模式时,android 应用程序无法访问 sdcard。有没有办法 (1) 检测设备何时处于此模式和 (2) 以编程方式关闭 USB 存储,至少暂时关闭,以便我的 android 应用程序可以访问 SD 卡?
我看过其他 SO 问题,但答案并不足够(例如,Android: Detecting USB)。
在许多安卓设备上,当设备插入计算机的 USB 端口甚至某些 USB 充电设备时,手机会进入 USB 存储模式。当设备处于此模式时,android 应用程序无法访问 sdcard。有没有办法 (1) 检测设备何时处于此模式和 (2) 以编程方式关闭 USB 存储,至少暂时关闭,以便我的 android 应用程序可以访问 SD 卡?
我看过其他 SO 问题,但答案并不足够(例如,Android: Detecting USB)。
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);
或者
但不幸的是,这两个 API 都不能公开访问?!