当设备连接为海量存储时,如何检测和处理我的应用?

时间:2011-11-30 19:33:15

标签: android broadcastreceiver sd-card usb-mass-storage

我用SD资源开发游戏。当我将设备连接为MASS STORAGE时,设备崩溃。这是因为当我将设备作为大容量存储器插入PC时,设备无法访问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大容量存储模式。

我的问题是:如何检测设备何时连接为USB Mass Storage

我应该使用哪些课程?

我可以实现哪些侦听器来调用我的错误消息活动并完成我的应用程序?

1 个答案:

答案 0 :(得分:0)

您应该使用BroadcastReceiver课程。在开始注册时,为ACTION_MEDIA_MOUNTEDACTION_MEDIA_UNMOUNTED意图的BroadcastReceiver。创建一个将覆盖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