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))); + } +}