1

我用 SD 资源开发游戏。当我将设备作为 MASS STORAGE 连接时,设备崩溃。这是因为当我将设备作为大容量存储设备插入 PC 时,设备无法访问 SD 卡。所以我尝试了不同的方法来解决。

目前我正在实现一个广播接收器,我正在处理动作 ACTION_MEDIA_BAD_REMOVAL(如果手动移除 SD 卡)和 ACTION_MEDIA_SHARED(如果设备作为大容量存储连接,它应该处理动作,但它没有)。

当检测到这两个操作时,我会发送一条错误消息并完成应用程序。

当我手动移除 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 卡,我也发送错误消息并完成应用程序。

但 Stills 在 USB 大容量存储模式下不起作用。

我的问题是:如何检测设备何时连接为 USB 大容量存储

我应该使用哪些类?

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

4

1 回答 1

0

你应该使用BroadcastReceiver类。在开始时为ACTION_MEDIA_MOUNTEDACTION_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

于 2011-11-30T19:58:42.420 回答