Android - Как отобразить диалоговое окно по собственному экрану?

Я задавался вопросом, может ли кто-либо сказать если, как раскрыться диалоговый экран по собственному экрану Android?

У меня в настоящее время есть приложение, которое захватывает исходящий вызов и останавливает его, я тогда хочу открыться диалоговое окно, которое вступило бы во владение от наборного диска, экранируют и предупреждают пользователя, что там пытаются звонить, был заблокирован и позволяют им, имеют некоторые новые опции от диалогового окна.

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

Это - мой диалоговый код до сих пор

  AlertDialog LDialog = new AlertDialog.Builder(context)
     .setTitle("Call Blocked")
     .setMessage("Call Blocked, reroute call?")
     .setPositiveButton("ok", null).create();
      LDialog.show();

Я предполагаю, что должен так или иначе заставить контекст быть контекстом экрана наборного диска?

Кто-либо может предложить какую-либо справку и помощь или ссылки на учебные руководства?

Заранее спасибо

17
задан Donal Rafferty 27 January 2010 в 13:31
поделиться

1 ответ

Нет прямого способа сделать это.

Вы можете загрузить сценарий по запросу. (снова использует нечто похожее на то, что упомянул Игнасио, но намного чище).

Проверьте эту ссылку на наличие нескольких способов: http://ajaxpatterns.org/On-Demand_Javascript

Мой любимый вариант (не всегда применим):

<script src="dojo.js" type="text/javascript">
dojo.require("dojo.aDojoPackage");

Закрытие Google также обеспечивает аналогичную функциональность.

-121--801980-

У меня недостаточно контекста, чтобы дать правильный ответ, но я предложу вам максимально сделать код неизменным . Используйте поля public final . Больше не получает или setters : каждое поле должно быть определено конструктором . Ваш код короче, удобочитаем и не позволяет писать код с побочными эффектами.

Это не мешает передавать пустые аргументы конструктору, хотя... Вы по-прежнему можете проверить каждый аргумент в соответствии с предложением @ cletus, но я предложу вам бросить IllegalArgumentException вместо StartPointerException , который не дает нового намека на то, что вы сделали.

В любом случае, это то, что я делаю как можно больше, и это значительно улучшило мой код (читаемость, стабильность). Все в моей команде так и делают, и мы этим очень довольны. Мы узнали, что когда мы пытаемся написать какой-то erlang код, где все незыблемо.

Надеюсь, это поможет.

-121--148â2-

Для моего приложения я использовал действие с темой Диалог . Можно объявить тему в файле манифеста:

<activity android:name="PopupActivity"
  android:launchMode="singleInstance" android:excludeFromRecents="true"
  android:taskAffinity="" android:theme="@android:style/Theme.Dialog" />
  • используйте launcheMode = «singleInstance» и taskAffinity = «» , если всплывающее окно отсоединено от основного приложения. В противном случае пользователь может нажать кнопку «Назад» и вернуться к предыдущему действию приложения.
  • excludeStartRecents = «true» , чтобы избежать появления всплывающего окна в последних задачах (долго нажимайте клавишу home)
  • theme = «@ android: style/Theme.Dialog» , чтобы задать тему диалога.
59
ответ дан 30 November 2019 в 10:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: