Вот реализация, которая позволяет отображать AlertDialog поверх текущей активной активности (это пример диалога сообщений, но может использоваться и для оповещений).
public class AlertsDialogue
{
private AlertDialog.Builder alertDialogBuilder;
private AlertDialog alert;
public AlertsDialogue(Context context, String title, String message)
{
alertDialogBuilder = new AlertDialog.Builder(context);
alertDialogBuilder.setTitle(title);
alertDialogBuilder.setIcon(R.drawable.ic_launcher);
alertDialogBuilder.setMessage(message)
.setCancelable(false)
.setPositiveButton(context.getString(R.string.text_ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which)
{
alert.dismiss();
}
});
alert = alertDialogBuilder.create();
Window window = alert.getWindow();
if (window != null)
{
// the important stuff..
window.setType(WindowManager.LayoutParams.TYPE_TOAST);
alert.show();
}
else
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
}
Диалоговое окно будет отображаться, даже если контекст, в котором он был создан, больше не активен, очень похоже на Toast
.
Позвонить с new AlertsDialogue(MyActivity.this, "title", "message");
Никаких дополнительных разрешений в файле AndroidManifest не требуется.