Android: диалоговое окно оповещения не ждет ввода - PullRequest
1 голос
/ 08 августа 2011

У меня есть приложение для 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;

Ответы [ 3 ]

3 голосов
/ 08 августа 2011

Просто ничего не делайте, пока пользователь не нажмет одну из кнопок диалога.Поскольку вы ничего не можете сделать, если SD-карта не установлена, просто выберите «Пожалуйста, установите SD-карту для продолжения» и кнопку «ОК», которая finish() - активна.

0 голосов
/ 06 сентября 2011

Вы можете попытаться проверить, существует ли ваша папка внешнего хранилища или нет как блок для проверки памяти.

//Check folder ready 
File dir = Environment.getExternalStorageDirectory();
while(!dir.exists()){dir = Environment.getExternalStorageDirectory();}
0 голосов
/ 08 августа 2011

Я изо всех сил старался ответить на твой вопрос рано, и я не могу понять, почему ты удвоил его, так как я чувствую, что мой ответ был достаточно ясным. Проверка вашей SD-карты должна вызываться блокирующим образом, хотя ваше приложение не будет запущено, пока не получит четкую информацию о наличии SD-карты. Похоже, вы пытаетесь сделать что-то в отдельном потоке при проверке SD-карты в потоке пользовательского интерфейса - это совершенно неправильно! Проверьте SD-карту, убедитесь, что она существует, и затем делайте все, что хотите. Надеюсь, теперь мне ясно, если вы все еще что-то упускаете - обязательно задавайте свои вопросы. С наилучшими пожеланиями.

...