A1: Вы сказали, что «пользователи часто подключают свои устройства к своим компьютерам для добавления музыки в папку приложений», я думаю, вы имеете в виду, что SD-карта подключена к ПК в режиме MassStorage
, вы можете проверить это следующим образом:
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_SHARED.equals(state)) {
// Sd card has connected to PC in MSC mode
}
A2: Вы сказали: «Это не будет работать, если пользователь запускает приложение после подключения к USB», я не могу с вами согласиться, в ICS вы можете зарегистрировать приемник для прослушивания android.hardware.action.USB_STATE
изменений, намерения система транслируется в режиме STICKY , то есть, даже если приемник в вашем приложении зарегистрирован после подключения по USB-кабелю, вы также можете получить это сообщение:
Intent intent = context.registerReceiver(...);
if (intent != null) {
boolean isConnected = intent.getBooleanExtra(USB_CONNECTED, false);
boolean isMscConnection = intent.getBooleanExtra(USB_FUNCTION_MASS_STORAGE, false);
}
намерение, возвращенное в методе, упомянутом выше, сообщение , которое вы пропустили до подключения USB-кабеля к ПК.
подробности см. По ссылке ниже:
http://www.androidadb.com/source/toolib-read-only/frameworks/base/core/java/android/hardware/usb/UsbManager.java.html