我用SD资源开发了一个游戏。当我把设备作为大容量存储器连接时,设备崩溃了。这是因为当我把我的设备插入个人电脑作为大容量存储时,设备无法访问SD卡。所以我尝试了不同的方法来解决。
目前,我正在实现一个BroadcastReceiver,我正在处理操作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卡,在那里,我也发送错误信息,并完成应用程序。
但是在USB大容量存储模式下,剧照不起作用。
我的问题是:如何检测设备何时连接为USB海量存储?
我应该使用哪些类?
我可以实现哪些侦听器来调用错误消息活动并完成我的应用程序?
发布于 2011-11-30 19:58:42
您应该使用BroadcastReceiver类。开始注册时,BroadcastReceiver表示ACTION_MEDIA_MOUNTED或ACTION_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
https://stackoverflow.com/questions/8331790
复制相似问题