Request permission to use internethelper

This commit is contained in:
Arjan Schrijver
2025-12-25 14:45:08 +01:00
committed by Arjan Schrijver
parent 38d877556d
commit b74105cf95
5 changed files with 25 additions and 18 deletions
@@ -39,6 +39,7 @@ import java.util.Set;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils;
import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
@@ -111,18 +112,10 @@ public class CatimaManager {
public List<CharSequence> findInstalledCatimaPackages() {
final List<CharSequence> installedCatimaPackages = new ArrayList<>();
for (final String knownPackage : CatimaContentProvider.KNOWN_PACKAGES) {
if (isPackageInstalled(knownPackage)) {
if (AndroidUtils.isPackageInstalled(knownPackage)) {
installedCatimaPackages.add(knownPackage);
}
}
return installedCatimaPackages;
}
private boolean isPackageInstalled(final String packageName) {
try {
return context.getPackageManager().getApplicationInfo(packageName, 0).enabled;
} catch (final PackageManager.NameNotFoundException e) {
return false;
}
}
}
@@ -46,6 +46,7 @@ import java.util.List;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.model.NavigationInfoSpec;
import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils;
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
public class OsmandEventReceiver {
@@ -220,18 +221,10 @@ public class OsmandEventReceiver {
public List<CharSequence> findInstalledOsmandPackages() {
List<CharSequence> installedPackages = new ArrayList<>();
for (String knownPackage : app.getBaseContext().getResources().getStringArray(R.array.osmand_package_names)) {
if (isPackageInstalled(knownPackage)) {
if (AndroidUtils.isPackageInstalled(knownPackage)) {
installedPackages.add(knownPackage);
}
}
return installedPackages;
}
private boolean isPackageInstalled(final String packageName) {
try {
return app.getBaseContext().getPackageManager().getApplicationInfo(packageName, 0).enabled;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
}
@@ -24,6 +24,7 @@ import android.content.BroadcastReceiver;
import android.content.ContentUris;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.database.Cursor;
@@ -356,4 +357,12 @@ public class AndroidUtils {
return null;
}
}
public static boolean isPackageInstalled(final String packageName) {
try {
return GBApplication.getContext().getPackageManager().getApplicationInfo(packageName, 0).enabled;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
}
@@ -60,6 +60,8 @@ public class PermissionsUtils {
public static final String CUSTOM_PERM_NOTIFICATION_LISTENER = "custom_perm_notifications_listener";
public static final String CUSTOM_PERM_NOTIFICATION_SERVICE = "custom_perm_notifications_service";
public static final String CUSTOM_PERM_DISPLAY_OVER = "custom_perm_display_over";
public static final String CUSTOM_PERM_INTERNET_HELPER = "nodomain.freeyourgadget.internethelper.INTERNET";
public static final String PACKAGE_INTERNET_HELPER = "nodomain.freeyourgadget.internethelper";
public static final List<String> specialPermissions = new ArrayList<>() {{
add(CUSTOM_PERM_IGNORE_BATT_OPTIM);
@@ -142,6 +144,13 @@ public class PermissionsUtils {
activity.getString(R.string.permission_internet_access_title),
activity.getString(R.string.permission_internet_access_summary)));
}
if (AndroidUtils.isPackageInstalled(PACKAGE_INTERNET_HELPER)) {
permissionsList.add(new PermissionDetails(
CUSTOM_PERM_INTERNET_HELPER,
"Internet helper",
"Permit access to the Gadgetbridge-internethelper add-on app"
));
}
// permissionsList.add(new PermissionDetails( // NOTE: can't request this, it's only allowed for system apps
// Manifest.permission.MEDIA_CONTENT_CONTROL,
// "Media content control",
@@ -208,6 +208,9 @@ public class WebViewSingleton {
} catch (PackageManager.NameNotFoundException e) {
internetHelperInstalled = false;
LOG.info("WEBVIEW: Internet helper not installed, only mimicked HTTP requests will work.");
} catch (SecurityException e) {
internetHelperInstalled = false;
LOG.info("WEBVIEW: Permission for internet helper not granted, only mimicked HTTP requests will work.");
}
}
}