Системная «назад» спрашивает страницу, а не закрывает приложение

This commit is contained in:
2026-09-30 09:53:47 +00:00
parent 20ed52384a
commit d07d9407cf

View File

@@ -3,15 +3,39 @@ package ru.ua1zbe.bus127;
import android.app.Activity; import android.app.Activity;
import android.os.Bundle; import android.os.Bundle;
import android.view.WindowManager; import android.view.WindowManager;
import android.webkit.WebView;
public class MainActivity extends Activity { public class MainActivity extends Activity {
private WebView web;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
// экран не гаснет, пока открыто расписание // экран не гаснет, пока открыто расписание
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
requestNotificationsPermission(); requestNotificationsPermission();
setContentView(Webs.create(this, Webs.URL_MAIN)); web = Webs.create(this, Webs.URL_MAIN);
setContentView(web);
}
/**
* WebView системную кнопку «назад» не перехватывает — без этого нажатие
* сразу закрывало бы приложение, даже когда открыта справка. Спрашиваем
* у страницы, закрыла ли она что-нибудь сама, и выходим только если нет.
*/
@Override
public void onBackPressed() {
if (web == null) {
super.onBackPressed();
return;
}
web.evaluateJavascript(
"(function(){return (window.__busBack && window.__busBack()) ? 1 : 0})()",
value -> {
String v = String.valueOf(value).replace("\"", "").trim();
if (!"1".equals(v)) finish();
});
} }
// Android 13+ требует явного согласия на показ уведомлений // Android 13+ требует явного согласия на показ уведомлений