Как программно закрыть меню питания Android? Такие приложения, как тревога, делают это.
Я не мог узнать из документации Android, есть ли там прослушиватель событий, который уведомляет нас об открытом меню питания.
Физически, если я нажимаю на любую область экрана, кроме меню питания, или нажимаю кнопку «Назад», меню удаляется.
Интересно, как я могу сделать это программно (я знаю, что это возможно, возможно, с помощью какого-то обходного пути, если не напрямую через api, поскольку это может сделать alarmy).




это называется настраиваемым диалоговым окном, вы можете создать ящик из ссылка на сайт, и есть свойство вроде
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
Добро пожаловать. Пожалуйста, дайте мне знать, если у вас возникнут проблемы.
Похоже, решение, которое я искал. Проголосовали. Я попробую, а затем помечу как ответ, если он сработает. Спасибо чувак!!