BusBridge: JS-мост меню, стрелки назад и версии сборки
This commit is contained in:
@@ -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)));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user