From 828106a6fc7e77794ce0f0bd2804e40e8b9a9f54 Mon Sep 17 00:00:00 2001 From: ua1zbe Date: Tue, 29 Sep 2026 05:12:49 +0000 Subject: [PATCH] =?UTF-8?q?BusBridge:=20JS-=D0=BC=D0=BE=D1=81=D1=82=20?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=8E,=20=D1=81=D1=82=D1=80=D0=B5=D0=BB?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BD=D0=B0=D0=B7=D0=B0=D0=B4=20=D0=B8=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=81=D0=B8=D0=B8=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/ru/ua1zbe/bus127/BusBridge.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 apk-webview/app/src/main/java/ru/ua1zbe/bus127/BusBridge.java diff --git a/apk-webview/app/src/main/java/ru/ua1zbe/bus127/BusBridge.java b/apk-webview/app/src/main/java/ru/ua1zbe/bus127/BusBridge.java new file mode 100644 index 0000000..6c5152b --- /dev/null +++ b/apk-webview/app/src/main/java/ru/ua1zbe/bus127/BusBridge.java @@ -0,0 +1,51 @@ +package ru.ua1zbe.bus127; + +import android.app.Activity; +import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.os.Build; +import android.webkit.JavascriptInterface; + +/** + * Мост между страницей расписания и приложением: кнопки заголовка + * (стрелка назад и меню) вызывают сюда. В браузерной версии страницы + * объект не существует, и кнопки там не показываются. + */ +public class BusBridge { + + private final Activity activity; + + BusBridge(Activity activity) { + this.activity = activity; + } + + @JavascriptInterface + public void goBack() { + activity.runOnUiThread(activity::finish); + } + + @JavascriptInterface + public void openAbout() { + open(AboutActivity.class); + } + + /** «2.6.3 (сборка 12)» — чтобы текст не расходился со сборкой. */ + @JavascriptInterface + public String version() { + try { + PackageInfo info = activity.getPackageManager() + .getPackageInfo(activity.getPackageName(), 0); + long code = Build.VERSION.SDK_INT >= Build.VERSION_CODES.P + ? info.getLongVersionCode() : info.versionCode; + return info.versionName + " (сборка " + code + ")"; + } catch (PackageManager.NameNotFoundException e) { + return ""; + } + } + + private void open(Class target) { + activity.runOnUiThread(() -> + activity.startActivity(new Intent(activity, target))); + } +}