我有一个Android应用程序扫描SD卡并播放位于SD卡上的文件。但是,在我可以继续处理之前,我想首先检查SD卡是否在插槽中。但是,警报对话框不会等待输入并继续处理导致错误的背景,因为没有SD卡并且后台处理尝试访问该SD卡。我想等到我完成警告对话框。这有什么办法?以下是警报对话框的代码。我只是希望程序等到用户选择选项..
String state = Environment.getExternalStorageState();
if (state.equalsIgnoreCase("mounted"))
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("The SD Card has been removed from your device. Please re-insert the SD card and try again")
.setCancelable(false)
.setPositiveButton("Retry", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id)
{
onRecreate();
}
})
.setNegativeButton("Exit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id)
{
dialog.cancel();
// onDestroy();
finish();
}
})
.setTitle("No SD-card Found")
.setIcon(R.drawable.alert_dialog_icon_m);
AlertDialog alert = builder.create();
alert.show();
return 0;
}//IF condition closes
else
return 1;
答案 0 :(得分:3)
在用户按下对话框的其中一个按钮之前,不要做任何事情。如果没有安装SD卡,你可以做很多事情,只需要一个'请挂载SD卡继续'和一个'OK'按钮finish()
- 活动。
答案 1 :(得分:0)
我尽早回答你的问题,我不明白为什么你加倍了,因为我觉得我的回答很清楚。您的SD卡检查必须以阻止方式进行,但在获得有关SD卡存在的明确信息之前,您的应用程序将无法继续运行。看起来你正在尝试在UI线程中检查SD卡时在单独的线程中做某事 - 这是完全错误的!检查SD卡,确保它存在,然后执行任何操作。我希望我现在很清楚,如果你仍然遗失任何东西 - 一定要问你的问题。最好的问候。
答案 2 :(得分:0)
您可以尝试检查外部存储文件夹是否存在,作为内存检查块。
//Check folder ready
File dir = Environment.getExternalStorageDirectory();
while(!dir.exists()){dir = Environment.getExternalStorageDirectory();}