Программно отключить USB-накопитель на устройствах Android - PullRequest
15 голосов
/ 13 сентября 2011

На многих устройствах Android, когда устройство подключено к USB-порту компьютера или даже на некоторых зарядных USB-устройствах, телефон переходит в режим USB Storage.Когда устройство находится в этом режиме, приложения для Android не могут получить доступ к SD-карте.Есть ли способ (1) определить, когда устройство находится в этом режиме, и (2) программно отключить USB-накопитель, хотя бы временно, чтобы мое приложение для Android могло получить доступ к SD-карте?

Я виделдругих SO вопросов и ответов на самом деле недостаточно (например, Android: обнаружение USB ).

Ответы [ 3 ]

6 голосов
/ 14 апреля 2012

A1: Если текущее состояние SD-карты SHARED, это означает, что она подключена к ПК в режиме 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();

, но, к сожалению, оба этих API не доступны для общего доступа?!

4 голосов
/ 13 сентября 2011

Вы можете обнаружить его (у вас есть ссылка), но, AFAIK, вы не можете подключить / отключить USB-накопитель, по крайней мере, с помощью общедоступных API SDK. В Honeycomb (3.0 и выше) запоминающее устройство USB больше не используется для доступа к внешнему хранилищу устройства, поэтому ваше приложение и компьютер могут получить к нему доступ одновременно.

0 голосов
/ 03 июня 2013

Блокирует массовое хранилище, используя отражение на API StorageManger.API-интерфейс Storage Manager доступен с уровня SDK -9.

Я не могу отразить API Mountservice, который может нацеливаться на меньший уровень ОС.Если кто-то сделал это, пожалуйста, дайте предложения

...