Не удалось отклонить AlertDialog

Привет, мне нужно показать AlertDialog из службы.

Это моя реализация.

Я добавил разрешение:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

Но я не могу отклонить диалог!!!

Я нажимаю кнопку ОК, но идентификатор не исчезает!!!

И вся система зависает в этом диалоге!!!

Пожалуйста, помогите!!!

public class CreditcheckService extends IntentService {
AlertDialog dialog;
public CreditcheckService() {
    super("CreditcheckService");
}

@Override
protected void onHandleIntent(Intent intent) {
    AlertDialog.Builder builder = new AlertDialog.Builder(
            getApplicationContext());

    builder.setMessage(R.string.please_connect).setTitle(
            R.string.unable_to);
    builder.setPositiveButton(R.string.okay_action,
            new OnClickListener() {
        @Override
        public void onClick(DialogInterface arg,
                int which) {dialog.cancel();
        }
    });
    dialog= builder.create(); 
    dialog.getWindow().setType(
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
    dialog.show();
}

Ответ 1

попробуйте следующее:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("")
            .setCancelable(false)
            .setPositiveButton("Yes",null);
    AlertDialog alert = builder.create();
    alert.show();   
}

Ответ 2

Это работает для моей службы

              try{
                    new Thread() {
                        @Override
                        public void run() {
                            Looper.prepare();
                            AlertDialog.Builder builder = new AlertDialog.Builder(
                                    getApplicationContext());

                            builder.setMessage("My messgae").setTitle("My Title");
                            builder.setPositiveButton("Ok",
                                    new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface arg,
                                                            int which) {dialog.cancel();
                                        }
                                    });

                            dialog= builder.create();
                            dialog.getWindow().setType(
                                    WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
                            dialog.show();
                            Looper.loop();
                        }
                    }.start();
                } catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }