Android:如何检测“打开USB存储”广播?

时间:2012-01-09 16:00:01

标签: java android broadcastreceiver

我正在尝试使用BroadcastReceiver检测打开USB存储,虽然我能够使用 android.intent.action.UMS_CONNECTED 操作检测连接的USB 和
使用 android.intent.action.UMS_DISCONNECTED 操作断开连接。

如何检测 USB存储

2 个答案:

答案 0 :(得分:3)

以下是我检查存储卡是否已安装/未安装的方法。您可以将其更改为检查删除/插入。我这样做是通过注册一个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>

如果还有其他任何陈述,有几种不同的状态checkout this。除去

答案 1 :(得分:0)

我认为当用户使用正在使用的USB存储器时会广播android.Intent.action.ACTION_MEDIA_EJECT,而当它关闭时会播放ACTION_MEDIA_MOUNTED。