mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Improve internet access checking logic
This commit is contained in:
committed by
Arjan Schrijver
parent
77f0dbbad8
commit
20652f2b05
@@ -20,8 +20,23 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
||||
package nodomain.freeyourgadget.gadgetbridge;
|
||||
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.AMAZFITBIP;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.AMAZFITCOR;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.AMAZFITCOR2;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.FITPRO;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.GALAXY_BUDS;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.LEFUN;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.MIBAND;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.MIBAND2;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.MIBAND2_HRX;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.MIBAND3;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.PEBBLE;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.TLW64;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.WATCHXPLUS;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.util.GB.NOTIFICATION_CHANNEL_HIGH_PRIORITY_ID;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.util.GB.NOTIFICATION_ID_ERROR;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.app.AlarmManager;
|
||||
import android.app.Application;
|
||||
@@ -59,6 +74,10 @@ import androidx.core.app.NotificationCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.json.JSONObject;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@@ -101,32 +120,13 @@ import nodomain.freeyourgadget.gadgetbridge.util.BondingUtil;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.InternetHelperSingleton;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.LimitedQueue;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.PermissionsUtils;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.backup.PeriodicZipExporter;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.preferences.DevicePrefs;
|
||||
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.AMAZFITBIP;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.AMAZFITCOR;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.AMAZFITCOR2;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.FITPRO;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.GALAXY_BUDS;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.LEFUN;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.MIBAND;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.MIBAND2;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.MIBAND2_HRX;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.MIBAND3;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.PEBBLE;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.TLW64;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.WATCHXPLUS;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.util.GB.NOTIFICATION_CHANNEL_HIGH_PRIORITY_ID;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.util.GB.NOTIFICATION_ID_ERROR;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.json.JSONObject;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* Main Application class that initializes and provides access to certain things like
|
||||
* logging and DB access.
|
||||
@@ -2279,6 +2279,10 @@ public class GBApplication extends Application {
|
||||
return BuildConfig.INTERNET_ACCESS && PermissionsUtils.checkPermission(getContext(), Manifest.permission.INTERNET);
|
||||
}
|
||||
|
||||
public static boolean hasInternetAccess() {
|
||||
return hasDirectInternetAccess() || InternetHelperSingleton.INSTANCE.ensureInternetHelperBound();
|
||||
}
|
||||
|
||||
public static GBPrefs getPrefs() {
|
||||
return prefs;
|
||||
}
|
||||
|
||||
+16
-13
@@ -450,10 +450,8 @@ public abstract class AbstractAppManagerFragment extends Fragment {
|
||||
if (watchfaceDesignerActivity != null) {
|
||||
appListFabNew.show();
|
||||
}
|
||||
if (appStoreActivity != null && mGBDevice.getDeviceCoordinator() instanceof PebbleCoordinator) {
|
||||
if (InternetHelperSingleton.INSTANCE.ensureInternetHelperBound()) {
|
||||
appListFabStore.show();
|
||||
}
|
||||
if (appStoreActivity != null && GBApplication.hasInternetAccess()) {
|
||||
appListFabStore.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -481,14 +479,19 @@ public abstract class AbstractAppManagerFragment extends Fragment {
|
||||
appListFabNew.show();
|
||||
}
|
||||
|
||||
boolean appStoreAllowed = GBApplication.getPrefs().getBoolean("pref_key_internethelper_allow_pebble_appstore", false);
|
||||
if (appStoreAllowed && appStoreActivity != null && mGBDevice.getDeviceCoordinator() instanceof PebbleCoordinator) {
|
||||
if (InternetHelperSingleton.INSTANCE.ensureInternetHelperBound()) {
|
||||
appListFabStore.setOnClickListener(v -> {
|
||||
Intent startIntent = new Intent(getContext(), appStoreActivity);
|
||||
startIntent.putExtra(GBDevice.EXTRA_DEVICE, mGBDevice);
|
||||
getContext().startActivity(startIntent);
|
||||
});
|
||||
if (appStoreActivity != null) {
|
||||
appListFabStore.setOnClickListener(v -> {
|
||||
Intent startIntent = new Intent(getContext(), appStoreActivity);
|
||||
startIntent.putExtra(GBDevice.EXTRA_DEVICE, mGBDevice);
|
||||
getContext().startActivity(startIntent);
|
||||
});
|
||||
if (mGBDevice.getDeviceCoordinator() instanceof PebbleCoordinator) {
|
||||
boolean pebbleAppStoreAllowed = GBApplication.getPrefs().getBoolean("pref_key_internethelper_allow_pebble_appstore", false);
|
||||
if (GBApplication.hasDirectInternetAccess() || (pebbleAppStoreAllowed && InternetHelperSingleton.INSTANCE.ensureInternetHelperBound())) {
|
||||
appListFabStore.show();
|
||||
}
|
||||
} else {
|
||||
// If other devices use a webview for their app store too, add the same logic here as for Pebble above
|
||||
appListFabStore.show();
|
||||
}
|
||||
}
|
||||
@@ -659,7 +662,7 @@ public abstract class AbstractAppManagerFragment extends Fragment {
|
||||
} else if (itemId == R.id.appmanager_app_openinstore) {
|
||||
boolean appStoreAllowed = GBApplication.getPrefs().getBoolean("pref_key_internethelper_allow_pebble_appstore", false);
|
||||
final String url = "https://apps.rebble.io/en_US/search/" + ((selectedApp.getType() == GBDeviceApp.Type.WATCHFACE) ? "watchfaces" : "watchapps") + "/1/?native=true&query=" + Uri.encode(selectedApp.getUUID().toString());
|
||||
if (appStoreAllowed && InternetHelperSingleton.INSTANCE.ensureInternetHelperBound()) {
|
||||
if (appStoreAllowed && GBApplication.hasInternetAccess()) {
|
||||
final Intent startIntent = new Intent(getContext().getApplicationContext(), RebbleAppStoreActivity.class);
|
||||
startIntent.putExtra(DeviceService.EXTRA_URI, url);
|
||||
startIntent.putExtra(GBDevice.EXTRA_DEVICE, mGBDevice);
|
||||
|
||||
+2
-2
@@ -169,7 +169,7 @@ public class BangleJSCoordinator extends AbstractBLEDeviceCoordinator {
|
||||
|
||||
@Override
|
||||
public boolean supportsAppsManagement(final GBDevice device) {
|
||||
return GBApplication.hasDirectInternetAccess() || InternetHelperSingleton.INSTANCE.isInternetHelperBound();
|
||||
return GBApplication.hasInternetAccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -233,7 +233,7 @@ public class BangleJSCoordinator extends AbstractBLEDeviceCoordinator {
|
||||
|
||||
settings.add(R.xml.devicesettings_header_connection);
|
||||
settings.add(R.xml.devicesettings_high_mtu);
|
||||
if (GBApplication.hasDirectInternetAccess() || InternetHelperSingleton.INSTANCE.isInternetHelperBound())
|
||||
if (GBApplication.hasInternetAccess())
|
||||
settings.add(R.xml.devicesettings_device_internet_access);
|
||||
|
||||
settings.add(R.xml.devicesettings_banglejs_activity);
|
||||
|
||||
+2
-2
@@ -918,8 +918,8 @@ public class BangleJSDeviceSupport extends AbstractBTLESingleDeviceSupport {
|
||||
}
|
||||
final String id = _id;
|
||||
|
||||
if (!GBApplication.hasDirectInternetAccess() && !InternetHelperSingleton.INSTANCE.ensureInternetHelperBound()) {
|
||||
uartTxJSONError("http", "Internet access not enabled, check Gadgetbridge Device Settings", id);
|
||||
if (!GBApplication.hasInternetAccess()) {
|
||||
uartTxJSONError("http", "Internet access not enabled in Gadgetbridge", id);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user