Android: как обнаружить "Включить USB-накопитель"?

Я пытаюсь обнаружить Включить USB-хранилище с помощью BroadcastReceiver, хотя я могу обнаружить USB-соединение, используя действие android.intent.action.UMS_CONNECTED
и
отключен с помощью действия android.intent.action.UMS_DISCONNECTED.


Как я могу обнаружить USB-хранилище?

Ответ 1

Ниже показано, как я устанавливаю/монтирует карту памяти. Вы можете изменить его, чтобы проверить удаленные/снятые. Я делаю это, зарегистрировав BroadcastReceiver, чтобы получить "события монтирования", затем проверьте, в каком состоянии находится карта памяти. Если он не установлен и не находится во время проверки (состояние во время установки карты снова), оно размонтируется или карта была удалена.

public class MemCardReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
            onMemcardMounted();
        }
        else if (!Environment.getExternalStorageState().equals(Environment.MEDIA_CHECKING)){
            onMemorycardUnMounted();
        }
    }

    private void onMemorycardUnMounted() {}

    private void onMemcardMounted() {}
}

И в ManifestFile

<receiver android:enabled="true" android:exported="true" android:name="the.name"> 
        <intent-filter> 
            <action android:name="android.intent.action.MEDIA_MOUNTED" /> 
            <action android:name="android.intent.action.MEDIA_UNMOUNTED" />
            <data android:scheme="file" /> 
        </intent-filter> 
    </receiver>

Есть несколько разных состояний проверить это, если есть какие-либо другие заявленные. удален

Ответ 2

Я думаю, что android.Intent.action.ACTION_MEDIA_EJECT транслируется, когда пользователь берет используемое USB-хранилище и ACTION_MEDIA_MOUNTED, когда он выключен.