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