Android закрыть меню выключения питания программно

Как программно закрыть меню питания Android? Такие приложения, как тревога, делают это.

Я не мог узнать из документации Android, есть ли там прослушиватель событий, который уведомляет нас об открытом меню питания.

Физически, если я нажимаю на любую область экрана, кроме меню питания, или нажимаю кнопку «Назад», меню удаляется.

Интересно, как я могу сделать это программно (я знаю, что это возможно, возможно, с помощью какого-то обходного пути, если не напрямую через api, поскольку это может сделать alarmy).

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
1 056
2

Ответы 2

это называется настраиваемым диалоговым окном, вы можете создать ящик из ссылка на сайт, и есть свойство вроде

 dialog.setCancelable(false);

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

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

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
  int keyPressed = event.getKeyCode();
  if (keyPressed==KeyEvent.KEYCODE_POWER){
    Log.d("###","Power button long click");
    Toast.makeText(MainActivity.this, "Clicked: "+keyPressed, Toast.LENGTH_SHORT).show();
    return true;}
  else
    return super.dispatchKeyEvent(event);
}

кредиты https://stackoverflow.com/a/39197768/9640177

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

sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));

Полное решение

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
  int keyPressed = event.getKeyCode();
  if (keyPressed==KeyEvent.KEYCODE_POWER){
    Log.d("###","Power button long click");
    Toast.makeText(MainActivity.this, "Clicked: "+keyPressed, Toast.LENGTH_SHORT).show();
 //send broadcast to close all dialogs
sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
    return true;}
  else
    return super.dispatchKeyEvent(event);
}

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

в вашем манифесте

<uses-permission android:name = "android.permission.DEVICE_POWER" />
  ....
  ....//other stuff goes here.

<receiver android:name = ".ShutdownReceiver">
  <intent-filter>
    <action android:name = "android.intent.action.ACTION_SHUTDOWN" />
    <action android:name = "android.intent.action.QUICKBOOT_POWEROFF" />
  </intent-filter>
</receiver>

кредит https://stackoverflow.com/a/39213344/9640177

Как только вы получите это намерение, вы узнаете, что po

Похоже, решение, которое я искал. Проголосовали. Я попробую, а затем помечу как ответ, если он сработает. Спасибо чувак!!

rahulserver 08.12.2018 05:32

Добро пожаловать. Пожалуйста, дайте мне знать, если у вас возникнут проблемы.

mayank1513 08.12.2018 10:52

Другие вопросы по теме