Из уведомления: AlertDialog без интерфейса - PullRequest
7 голосов
/ 17 мая 2011

Я создаю уведомление, которое запускает Намерение. Вот действительно сокращенная выдержка из моего кода ...

Notification notification = new Notification(R.drawable.icon, "notification", System.currentTimeMillis());
NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Intent notificationIntent = new Intent(BackgroundService.this, ConnectionHandler.class);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
notificationIntent.addFlags(Intent.FLAG_FROM_BACKGROUND);

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, getString(R.string.notification_title), getString(R.string.notification_body), pendingIntent);
notification.flags |= notification.FLAG_AUTO_CANCEL;
nm.notify(1, notification);

В своем намерении (ConnectionHandler.class) я хотел бы показать AlertDialog, который работает. Но я бы хотел, чтобы AlertDialog отображался без открытия нового окна пользовательского интерфейса. Лучшим для меня было бы, если AlertDialog просто появляется без чего-либо еще при нажатии на запись уведомления.

Любая идея приветствуется.

С уважением, Тоби

Ответы [ 3 ]

8 голосов
/ 17 мая 2011

Из Руководства разработчика :

Отображение диалога

Диалог всегда создается и отображается как часть действия.

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

5 голосов
/ 17 мая 2011

Создать прозрачную активность, как показано ниже:

Как создать прозрачную активность на Android?

и объединить его с темой диалога.

0 голосов
/ 29 мая 2013

Ответ очень прост: Задание CAN выглядит как диалог. В декларации добавить это:

android:theme="@android:style/Theme.Dialog"

И это будет выглядеть как диалог.

Если вы хотите показать диалог оповещения, используйте этот код:

  • активность
    AlertDialog d = new AlertDialog.Builder(this).setTitle("Blah-Blah").setBlah().show()
  • Manifest
    android:theme="@android:style/Theme.Translucent"
...