Как я могу обнаружить и обработать свое приложение, когда устройство подключено как Mass Storage? - PullRequest
1 голос
/ 30 ноября 2011

Я разрабатываю игру с SD-ресурсами.Когда я подключаю устройство как MASS STORAGE, происходит сбой устройства.Это потому, что когда я подключаю свое устройство к ПК в качестве запоминающего устройства, устройство не имеет доступа к SD-карте.Поэтому я попробовал разные способы решения.

В настоящее время я реализую BroadcastReceiver и обрабатываю действия ACTION_MEDIA_BAD_REMOVAL (если SD-карта извлекается вручную) и ACTION_MEDIA_SHARED (он должен обрабатывать действие, если устройствоподключен как Mass Storage, но это не так).

Когда обнаруживаются оба этих действия, я отправляю сообщение об ошибке и завершаю приложение.

Когда я вынимаю SD-карту вручнуюэто работает, но не как запоминающее устройство.

Также на каждом кадре я проверяю, находится ли SD-карта на устройстве на каждом кадре с этим методом.

 public int hasSDCard()
 {
    String state = Environment.getExternalStorageState();
        if(Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state))
                return 1;
    return 0;
 }

Когда 0, это неУ меня нет SD-карты и карты, на которой я также отправляю сообщение об ошибке и завершаю работу приложения.

Но все равно не работает в режиме USB Mass Storage.

Мой вопрос: Как я могу определить, когда устройство подключено как USB Mass Storage ?

Какие классы мне следует использовать?

Какие слушатели я могу реализовать дляпозвони моей ошибке месМудрец деятельности и закончить мое приложение?

1 Ответ

0 голосов
/ 30 ноября 2011

Вы должны использовать BroadcastReceiver класс.В начале зарегистрируйте BroadcastReceiver для ACTION_MEDIA_MOUNTED или ACTION_MEDIA_UNMOUNTED намерения.Создайте класс, который будет переопределять метод onReceive(), который является методом, в котором вы обрабатываете монтирование / размонтирование.

http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_MOUNTED

В качестве дополнительной информации прочитайте амортизацию ACTION_UMS_CONNECTED

http://developer.android.com/reference/android/content/Intent.html#ACTION_UMS_CONNECTED

...