0
@Override 
public void run() { 
    //Create thread that can alter the UI 
    AlarmPage.this.runOnUiThread(new Runnable() { 
     public void run() { 
      cal = Calendar.getInstance(); 
      //See if current time matches set alarm time 
      if((cal.get(Calendar.HOUR_OF_DAY) == alarmTime.getCurrentHour()) 
        && (cal.get(Calendar.MINUTE) == alarmTime.getCurrentMinute())){ 
       //If the sound is playing, stop it and rewind 
       if(sound.isPlaying()){ 
        ShowDialog(); 
        alarmTimer.cancel(); 
        alarmTask.cancel(); 
        alarmTask = new PlaySoundTask(); 
        alarmTimer = new Timer(); 
        alarmTimer.schedule(alarmTask, sound.getDuration(), sound.getDuration()); 
       } 
       sound.start(); 
      }  
     } 
    }); 
} 

public void ShowDialog() { 
    final AlertDialog.Builder alertDialog = new AlertDialog.Builder(this); 

    alertDialog.setTitle("REMINDER!"); 
    alertDialog.setMessage("Turn off alarm by pressing off"); 

    alertDialog.setNegativeButton("Off", new DialogInterface.OnClickListener(){ 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      Toast.makeText(getApplicationContext(), "OFF", Toast.LENGTH_SHORT); 
     } 
    }); 

    alertDialog.show(); 
} 

Я делаю простой будильник, уведомляющий пользователя. Я хочу создать окно предупреждения, которое дает пользователю возможность отключить будильник, когда он выключится. Я смог сделать окно предупреждения, но он появляется только в приложении, не за пределами приложения. Я понимаю, что приложение должно быть в фоновом режиме. Если мне нужно показать больше кода или быть более конкретным, просто спросите пожалуйста.Как ящик AlertDialog появляется за пределами приложения?

+1

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

+0

Возможный дубликат: http://stackoverflow.com/questions/11081380/how-to-create-alertdialog-outside-of-an-application – shujj

ответ

2

Добавить строку как:

public void ShowDialog() { 
    final AlertDialog.Builder alertDialog = new AlertDialog.Builder(this); 

    alertDialog.setTitle("REMINDER!"); 
    alertDialog.setMessage("Turn off alarm by pressing off"); 

    alertDialog.setNegativeButton("Off", new DialogInterface.OnClickListener(){ 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      Toast.makeText(getApplicationContext(), "OFF", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    alertDialog.show(); 
    // line you have to add 
    alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); 
} 

проверить сейчас.

+3

Пожалуйста, попросите расспросить вас, где этот код должен быть вставлен, а также дайте некоторые комментарии о том, что делает этот код и почему. –

+0

Я знаю, где это сказать, проблема в том, что getWindow() не работает, «Не удается решить». – Spartaco118

+0

ohh извините, Я неправильно использую строку кода. – RBK

0

ли это создать Activity без ContentView или View, связанные с ним и вызвать ваш метод alertDialog в вашем onCreate также помнить, чтобы установить фон из Activity в Transparent с помощью ColourDrawable

И эта деятельность будет выглядеть диалог или будет отвечать вашим предпочтениям, вы также можете упасть обратно Theme с, так что вы можете установить Activity в Dialog и относиться к нему как Dialog также использовать DialogFragment

0

Не принимайте ответы, если они не затрагивают ваш вопрос, это вводит в заблуждение.

Принятый ответ неправильный, так как он никогда не будет работать вне вашего приложения.

Причина:

  1. Это требует контекста активности не контекст приложения.

  2. Если вы предоставите контекст приложения, ваше приложение будет врезаться с IllegalArgumentException- вам нужно использовать Theme.AppCompat или их decendents ...

Если вам нужна функциональность, как на самом деле говорится в вопросе у вас должна быть отдельная деятельность в виде диалога, например, here

или вы можете добавить пользовательское представление в окно с помощью диспетчера окон и сделать его системным оповещением, например here.

Смежные вопросы