DeviceCoordinator.findInstallHandler: add Bundle parameter

EventHandler.onInstallApp already has a Bundle parameter for passing options to install handlers.
This prepares the infrastructure for PR #5923.
This commit is contained in:
Thomas Kuehne
2026-04-03 20:57:30 +00:00
parent 05b229c833
commit d65b1fd853
55 changed files with 110 additions and 61 deletions
@@ -62,6 +62,7 @@ public class OpenFwAppInstallerActivity extends AbstractGBActivity {
if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
final InstallHandler installHandler = device.getDeviceCoordinator().findInstallHandler(
resultData.getData(),
Bundle.EMPTY,
GBApplication.app().getApplicationContext()
);
@@ -208,7 +208,7 @@ public class AppManagerActivity extends AbstractGBActivity {
super.onActivityResult(requestCode, resultCode, resultData);
if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
final Uri uri = resultData.getData();
final InstallHandler installHandler = mGBDevice.getDeviceCoordinator().findInstallHandler(uri, this);
final InstallHandler installHandler = mGBDevice.getDeviceCoordinator().findInstallHandler(uri, Bundle.EMPTY, this);
if (installHandler == null) {
GB.toast(getString(R.string.fwinstaller_file_not_compatible_to_device), Toast.LENGTH_LONG, GB.INFO);
return;
@@ -114,7 +114,7 @@ class RebbleAppStoreActivity : AbstractGBActivity() {
}
fun installFile(file: File) {
val installHandler: InstallHandler? = mGBDevice?.deviceCoordinator?.findInstallHandler(file.toUri(), applicationContext)
val installHandler: InstallHandler? = mGBDevice?.deviceCoordinator?.findInstallHandler(file.toUri(), Bundle.EMPTY, applicationContext)
if (installHandler == null) {
GB.toast(getString(R.string.fwinstaller_file_not_compatible_to_device), Toast.LENGTH_LONG, GB.ERROR)
LOG.error("Installable file not compatible with device")
@@ -1,6 +1,7 @@
package nodomain.freeyourgadget.gadgetbridge.activities.install
import android.net.Uri
import android.os.Bundle
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
@@ -38,7 +39,7 @@ class FileInstallerViewModel(private val application: GBApplication) : ViewModel
for (device in getAllDeviceTypesConnectedFirst()) {
val coordinator = device.deviceCoordinator
try {
val handler = coordinator.findInstallHandler(uri, application.applicationContext)
val handler = coordinator.findInstallHandler(uri, Bundle.EMPTY, application.applicationContext)
if (handler != null) {
LOG.debug(
"Found compatible install handler {} for {}",
@@ -222,7 +222,7 @@ public class FwAppInstallerActivity extends AbstractGBActivity implements Instal
uri = getIntent().getParcelableExtra(Intent.EXTRA_STREAM);
}
installHandler = device.getDeviceCoordinator().findInstallHandler(uri, this);
installHandler = device.getDeviceCoordinator().findInstallHandler(uri, Bundle.EMPTY, this);
if (installHandler == null) {
// Should never happen? at this point, we got here by installing to the device
@@ -195,7 +195,7 @@ class GpxRouteInstallerActivity : AbstractGBActivity(), InstallActivity {
}
currentUri = intentUri
val deviceInstallHandler = device.deviceCoordinator.findInstallHandler(currentUri, this)
val deviceInstallHandler = device.deviceCoordinator.findInstallHandler(currentUri, Bundle.EMPTY, this)
if (deviceInstallHandler == null) {
// Should never happen if we got here
GB.toast(this, getString(R.string.installer_activity_unable_to_find_handler), Toast.LENGTH_LONG, GB.ERROR)
@@ -29,6 +29,7 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.widget.Toast;
import androidx.annotation.DrawableRes;
@@ -522,7 +523,7 @@ public abstract class AbstractDeviceCoordinator implements DeviceCoordinator {
@Nullable
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
return null;
}
@@ -23,6 +23,7 @@ import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
@@ -513,14 +514,13 @@ public interface DeviceCoordinator {
boolean supportsFlashing(@NonNull GBDevice device);
/**
* Finds an install handler for the given uri that can install the given
* Finds an {@link InstallHandler} for the given {@link Uri} that can install the given
* uri on the device being managed.
*
* @param uri
* @param context
* @return the install handler or null if that uri cannot be installed on the device
* @return the {@link InstallHandler} or {@code null} if the {@link Uri} cannot be installed
* on the device
*/
InstallHandler findInstallHandler(Uri uri, Context context);
@Nullable
InstallHandler findInstallHandler(Uri uri, Bundle options, Context context);
/**
* Returns true if this device/coordinator supports taking screenshots.
@@ -20,6 +20,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.atcbleoepl;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.os.ParcelUuid;
import androidx.annotation.NonNull;
@@ -77,7 +78,7 @@ public class ATCBLEOEPLCoordinator extends AbstractDeviceCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
ATCBLEOEPLInstallHandler installHandler = new ATCBLEOEPLInstallHandler(uri, context);
return installHandler.isValid() ? installHandler : null;
}
@@ -20,6 +20,7 @@ import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.os.ParcelUuid;
import androidx.annotation.NonNull;
@@ -87,7 +88,7 @@ public class CmfWatchProCoordinator extends AbstractBLEDeviceCoordinator {
@Nullable
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final CmfInstallHandler handler = new CmfInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -18,6 +18,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.divoom;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -48,7 +49,7 @@ public class PixooCoordinator extends AbstractBLEDeviceCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
PixooInstallHandler installHandler = new PixooInstallHandler(uri, context);
return installHandler.isValid() ? installHandler : null;
}
@@ -4,6 +4,7 @@ import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -377,8 +378,8 @@ public abstract class GarminCoordinator extends AbstractBLEDeviceCoordinator {
@Nullable
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
final GarminFitFileInstallHandler fitFileInstallHandler = new GarminFitFileInstallHandler(uri, context);
public InstallHandler findInstallHandler(Uri uri, Bundle options, Context context) {
final GarminFitFileInstallHandler fitFileInstallHandler = new GarminFitFileInstallHandler(uri, options, context);
if (fitFileInstallHandler.isValid())
return fitFileInstallHandler;
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.garmin;
import android.app.Activity;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -58,7 +59,7 @@ public class GarminFitFileInstallHandler implements InstallHandler {
private FileType.FILETYPE fileType;
private FitParseException fitParseException;
public GarminFitFileInstallHandler(final Uri uri, final Context context) {
public GarminFitFileInstallHandler(final Uri uri, final Bundle options, final Context context) {
this.mContext = context;
final UriHelper uriHelper;
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitband5;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -49,7 +50,7 @@ public class AmazfitBand5Coordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitBand5FWInstallHandler handler = new AmazfitBand5FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -47,7 +48,7 @@ public class AmazfitBipCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitBipFWInstallHandler handler = new AmazfitBipFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -40,7 +41,7 @@ public class AmazfitBipLiteCoordinator extends AmazfitBipCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitBipLiteFWInstallHandler handler = new AmazfitBipLiteFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -18,6 +18,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip3;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -46,7 +47,7 @@ public class AmazfitBip3Coordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitBip3FWInstallHandler handler = new AmazfitBip3FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -18,6 +18,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip3pro;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -46,7 +47,7 @@ public class AmazfitBip3ProCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitBip3ProFWInstallHandler handler = new AmazfitBip3ProFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbips;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -47,7 +48,7 @@ public class AmazfitBipSCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitBipSFWInstallHandler handler = new AmazfitBipSFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -18,6 +18,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbips;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -36,7 +37,7 @@ public class AmazfitBipSLiteCoordinator extends AmazfitBipSCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitBipSLiteFWInstallHandler handler = new AmazfitBipSLiteFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbipu;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -47,7 +48,7 @@ public class AmazfitBipUCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitBipUFWInstallHandler handler = new AmazfitBipUFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbipupro;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -47,7 +48,7 @@ public class AmazfitBipUProCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitBipUProFWInstallHandler handler = new AmazfitBipUProFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitcor;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -48,7 +49,7 @@ public class AmazfitCorCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitCorFWInstallHandler handler = new AmazfitCorFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitcor2;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -47,7 +48,7 @@ public class AmazfitCor2Coordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitCor2FWInstallHandler handler = new AmazfitCor2FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgtr;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -46,7 +47,7 @@ public class AmazfitGTRCoordinator extends HuamiCoordinator {
return Pattern.compile("Amazfit GTR", Pattern.CASE_INSENSITIVE);
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitGTRFWInstallHandler handler = new AmazfitGTRFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgtr;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -47,7 +48,7 @@ public class AmazfitGTRLiteCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitGTRLiteFWInstallHandler handler = new AmazfitGTRLiteFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgtr2;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -47,7 +48,7 @@ public class AmazfitGTR2Coordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitGTR2FWInstallHandler handler = new AmazfitGTR2FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgtr2;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -47,7 +48,7 @@ public class AmazfitGTR2eCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitGTR2eFWInstallHandler handler = new AmazfitGTR2eFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgts;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -47,7 +48,7 @@ public class AmazfitGTSCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitGTSFWInstallHandler handler = new AmazfitGTSFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgts2;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -47,7 +48,7 @@ public class AmazfitGTS2Coordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitGTS2FWInstallHandler handler = new AmazfitGTS2FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgts2;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -40,7 +41,7 @@ public class AmazfitGTS2MiniCoordinator extends AmazfitGTS2Coordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitGTS2MiniFWInstallHandler handler = new AmazfitGTS2MiniFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgts2;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -47,7 +48,7 @@ public class AmazfitGTS2eCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitGTS2eFWInstallHandler handler = new AmazfitGTS2eFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitneo;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -50,7 +51,7 @@ public class AmazfitNeoCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitNeoFWInstallHandler handler = new AmazfitNeoFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -18,6 +18,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitpop;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -37,7 +38,7 @@ public class AmazfitPopCoordinator extends AmazfitBipUCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitPopFWInstallHandler handler = new AmazfitPopFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -18,6 +18,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitpoppro;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -37,7 +38,7 @@ public class AmazfitPopProCoordinator extends AmazfitBipUProCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitPopProFWInstallHandler handler = new AmazfitPopProFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfittrex;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -47,7 +48,7 @@ public class AmazfitTRexCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitTRexFWInstallHandler handler = new AmazfitTRexFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfittrexpro;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -47,7 +48,7 @@ public class AmazfitTRexProCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitTRexProFWInstallHandler handler = new AmazfitTRexProFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -18,6 +18,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitvergel;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -46,7 +47,7 @@ public class AmazfitVergeLCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final AmazfitVergeLFWInstallHandler handler = new AmazfitVergeLFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitx;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -49,7 +50,7 @@ public class AmazfitXCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
// TOOD Need to be checked first
final AmazfitXFWInstallHandler handler = new AmazfitXFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.miband2;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -53,7 +54,7 @@ public class MiBand2Coordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final MiBand2FWInstallHandler handler = new MiBand2FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.miband3;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -55,7 +56,7 @@ public class MiBand3Coordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final MiBand3FWInstallHandler handler = new MiBand3FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.miband4;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -51,7 +52,7 @@ public class MiBand4Coordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final MiBand4FWInstallHandler handler = new MiBand4FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.miband5;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -50,7 +51,7 @@ public class MiBand5Coordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final MiBand5FWInstallHandler handler = new MiBand5FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.miband6;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -51,7 +52,7 @@ public class MiBand6Coordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final MiBand6FWInstallHandler handler = new MiBand6FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.zeppe;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -47,7 +48,7 @@ public class ZeppECoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final ZeppEFWInstallHandler handler = new ZeppEFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huami.zeppos;
import android.app.Activity;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -132,7 +133,7 @@ public abstract class ZeppOsCoordinator extends HuamiCoordinator {
}
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
if (supportsAgpsUpdates()) {
final ZeppOsAgpsInstallHandler agpsInstallHandler = new ZeppOsAgpsInstallHandler(uri, context);
if (agpsInstallHandler.isValid()) {
@@ -20,6 +20,7 @@ import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.os.ParcelUuid;
import androidx.annotation.NonNull;
@@ -375,7 +376,7 @@ public abstract class HuaweiCoordinator extends AbstractDeviceCoordinator {
}
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
public InstallHandler findInstallHandler(Uri uri, Bundle options, Context context) {
final HuaweiInstallHandler handler = new HuaweiInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -23,6 +23,7 @@ import android.bluetooth.BluetoothDevice;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.os.ParcelUuid;
import androidx.annotation.DrawableRes;
@@ -122,7 +123,7 @@ public class MiBandCoordinator extends AbstractBLEDeviceCoordinator {
}
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
public InstallHandler findInstallHandler(Uri uri, Bundle options, Context context) {
MiBandFWInstallHandler handler = new MiBandFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -21,6 +21,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.pebble;
import android.app.Activity;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
@@ -97,7 +98,7 @@ public class PebbleCoordinator extends AbstractBLClassicDeviceCoordinator {
}
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
public InstallHandler findInstallHandler(Uri uri, Bundle options, Context context) {
PBWInstallHandler installHandler = new PBWInstallHandler(uri, context);
return installHandler.isValid() ? installHandler : null;
}
@@ -20,6 +20,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.pinetime;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -47,7 +48,7 @@ public class PineTimeJFCoordinator extends AbstractBLEDeviceCoordinator {
}
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
public InstallHandler findInstallHandler(Uri uri, Bundle options, Context context) {
PineTimeInstallHandler handler = new PineTimeInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -22,6 +22,7 @@ import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.os.ParcelUuid;
import androidx.annotation.NonNull;
@@ -130,7 +131,7 @@ public class QHybridCoordinator extends AbstractBLEDeviceCoordinator {
}
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
public InstallHandler findInstallHandler(Uri uri, Bundle options, Context context) {
if (isHybridHR()) {
FossilHRInstallHandler installHandler = new FossilHRInstallHandler(uri, context);
if (!installHandler.isValid()) {
@@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.test;
import android.app.Activity;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -203,9 +204,9 @@ public class TestDeviceCoordinator extends AbstractDeviceCoordinator {
@Nullable
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
// TODO findInstallHandler?
return super.findInstallHandler(uri, context);
return super.findInstallHandler(uri, options, context);
}
@Override
@@ -3,6 +3,7 @@ package nodomain.freeyourgadget.gadgetbridge.devices.thermalprinter;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -65,7 +66,7 @@ public class ThermalPrinterCoordinator extends AbstractBLEDeviceCoordinator {
@Nullable
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
public InstallHandler findInstallHandler(Uri uri, Bundle options, Context context) {
final ImageFilePrinterHandler imageFilePrinterHandler = new ImageFilePrinterHandler(uri, context);
if (imageFilePrinterHandler.isValid()) {
return imageFilePrinterHandler;
@@ -22,6 +22,7 @@ import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.os.ParcelUuid;
import androidx.annotation.NonNull;
@@ -117,7 +118,7 @@ public abstract class XiaomiCoordinator extends AbstractBLEDeviceCoordinator {
@Nullable
@Override
public InstallHandler findInstallHandler(final Uri uri, final Context context) {
public InstallHandler findInstallHandler(final Uri uri, final Bundle options, final Context context) {
final XiaomiInstallHandler handler = new XiaomiInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@@ -1326,7 +1326,7 @@ public class GarminSupport extends AbstractBTLESingleDeviceSupport implements IC
@Override
public void onInstallApp(Uri uri, @NonNull final Bundle options) {
final GarminFitFileInstallHandler fitFileInstallHandler = new GarminFitFileInstallHandler(uri, getContext());
final GarminFitFileInstallHandler fitFileInstallHandler = new GarminFitFileInstallHandler(uri, options, getContext());
if (fitFileInstallHandler.isValid()) {
communicator.sendMessage(
"upload fit file",