Como saber se a máscara de notificação está desativada no Android
Eu tenho um programa que cria uma notificação se o aplicativo não estiver sendo executado. Para fazer isso, usei o seguinte código:
public void onWindowFocusChanged(boolean focus)
{
inFocus = focus;
if (inFocus)
{//If this activity is in focus, fills data and clears notifications
fillData();
Notify.clear();
}
else
{
if (!RespondScreen.inFocus && !ClearDialog.inFocus)
{
Creates a notification
}
}
}
Isso funciona bem, exceto quando a sombra de notificação é pressionada. Isso faz com que a atividade não fique em foco e, como nenhuma das outras duas atividades está em foco, uma notificação é criada. Essa notificação é destruída assim que a sombra é puxada para cima, mas cria uma perturbação irritante e desnecessária para o usuário. Existe alguma configuração que eu possa usar para testar se a sombra de notificação está em foco ou de outra maneira totalmente?
Edit: Usando o conselho de Qberticus, consegui encontrar uma solução viável:
public void onWindowFocusChanged(boolean focus)
{
if (focus)
{//If this activity is in focus, fills data and clears notifications
inFocus = focus;
fillData();
Notify.clear();
}
}
@Override
public void onPause()
{
super.onPause();
inFocus = false;
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
if (!RespondScreen.inFocus && !ClearDialog.inFocus)
{
Intent notifier = new Intent();
notifier.setAction("itp.uts.program.NOTIFY");
Bundle bundle = new Bundle();
bundle.putBoolean("StartNotify", true);
bundle.putBoolean("StartSound", false);
notifier.putExtras(bundle);
getApplicationContext().startService(new Intent(notifier));
}
}
}, 200);
}
Por algum motivo, o método onResume não estava funcionando com Notify.clear (), então usei uma combinação da minha tentativa e da sugestão do Qberticus. É um pouco desajeitado, mas funciona perfeitamente.