From 0dd6c9a8d2bd8a7b484cfbe4d8bfbb67b5f156fb Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Wed, 24 Dec 2025 17:35:33 +0100 Subject: [PATCH] Add missing permission alert for Bangle.js app loader --- .../banglejs/AppsManagementActivity.java | 22 +++++++++++-- .../activity_banglejs_apps_management.xml | 33 ++++++++++++++++++- app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 53 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/banglejs/AppsManagementActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/banglejs/AppsManagementActivity.java index cd864fb7ca..bc90ffd628 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/banglejs/AppsManagementActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/banglejs/AppsManagementActivity.java @@ -26,12 +26,14 @@ import android.content.IntentFilter; import android.net.Uri; import android.os.Bundle; import android.util.Base64; +import android.view.View; import android.webkit.DownloadListener; import android.webkit.JavascriptInterface; import android.webkit.PermissionRequest; import android.webkit.ValueCallback; import android.webkit.WebSettings; import android.webkit.WebView; +import android.widget.LinearLayout; import android.widget.Toast; import androidx.localbroadcastmanager.content.LocalBroadcastManager; @@ -106,8 +108,10 @@ public class AppsManagementActivity extends AbstractGBActivity { @Override protected void onDestroy() { - webView.destroy(); - webView = null; + if (webView != null) { + webView.destroy(); + webView = null; + } LocalBroadcastManager.getInstance(this).unregisterReceiver(deviceUpdateReceiver); super.onDestroy(); finish(); @@ -189,8 +193,20 @@ public class AppsManagementActivity extends AbstractGBActivity { } private void initViews() { - //https://stackoverflow.com/questions/4325639/android-calling-javascript-functions-in-webview webView = findViewById(R.id.webview); + LinearLayout permissionMissingAlert = findViewById(R.id.permission_missing_alert); + if (GBApplication.hasInternetAccess() && !GBApplication.hasDirectInternetAccess()) { + // Using the internethelper add-on app, check whether the Bangle.js app loader is allowed in settings + boolean appLoaderAllowed = GBApplication.getPrefs().getBoolean("pref_key_internethelper_allow_bangle_app_loader", false); + if (!appLoaderAllowed) { + webView.setVisibility(View.GONE); + permissionMissingAlert.setVisibility(View.VISIBLE); + return; + } + } + webView.setVisibility(View.VISIBLE); + permissionMissingAlert.setVisibility(View.GONE); + //https://stackoverflow.com/questions/4325639/android-calling-javascript-functions-in-webview WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); settings.setDatabaseEnabled(true); diff --git a/app/src/main/res/layout/activity_banglejs_apps_management.xml b/app/src/main/res/layout/activity_banglejs_apps_management.xml index 08188a975e..05d8de5ed0 100644 --- a/app/src/main/res/layout/activity_banglejs_apps_management.xml +++ b/app/src/main/res/layout/activity_banglejs_apps_management.xml @@ -5,7 +5,38 @@ + android:layout_height="match_parent" + android:gravity="center" + android:orientation="vertical"> + + + + + + + + + Pebble JS runner Pebble JavaScript service Running Pebble app/watchface JavaScript + Permission missing + Access to the Bangle.js app loader is currently not allowed by your settings. Please go to the internet helper settings in the external integrations settings to enable it.