From 614d711226a1e95d35245ba36e05daa45a54886f Mon Sep 17 00:00:00 2001 From: Daniel Dakhno Date: Thu, 28 Jan 2021 11:34:43 +0100 Subject: [PATCH] Fossil Hybrid: file handle can be passed to service as string --- .../devices/qhybrid/QHybridSupport.java | 21 +++++++++++++++++-- .../devices/qhybrid/file/FileHandle.java | 9 ++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/QHybridSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/QHybridSupport.java index 6b0cce5e3..39a517c66 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/QHybridSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/QHybridSupport.java @@ -284,7 +284,11 @@ public class QHybridSupport extends QHybridBaseSupport { } case QHYBRID_COMMAND_UPLOAD_FILE:{ Object handleObject = intent.getSerializableExtra("EXTRA_HANDLE"); - if(handleObject == null || !(handleObject instanceof FileHandle)) return; + if(handleObject == null)return; + if(handleObject instanceof String){ + handleObject = FileHandle.fromName((String)handleObject); + } + if(!(handleObject instanceof FileHandle)) return; FileHandle handle = (FileHandle) handleObject; String filePath = intent.getStringExtra("EXTRA_PATH"); watchAdapter.uploadFile(handle, filePath, intent.getBooleanExtra("EXTRA_ENCRYPTED", false)); @@ -293,7 +297,7 @@ public class QHybridSupport extends QHybridBaseSupport { } } }; - LocalBroadcastManager.getInstance(getContext()).registerReceiver(commandReceiver, commandFilter); + LocalBroadcastManager.getInstance(GBApplication.getContext()).registerReceiver(commandReceiver, commandFilter); helper = new PackageConfigHelper(GBApplication.getContext()); @@ -301,6 +305,7 @@ public class QHybridSupport extends QHybridBaseSupport { globalFilter.addAction(QHYBRID_ACTION_SET_ACTIVITY_HAND); globalFilter.addAction(QHYBRID_COMMAND_SET_MENU_MESSAGE); globalFilter.addAction(QHYBRID_COMMAND_SET_WIDGET_CONTENT); + globalFilter.addAction(QHYBRID_COMMAND_UPLOAD_FILE); globalCommandReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -363,6 +368,18 @@ public class QHybridSupport extends QHybridBaseSupport { } break; } + case QHYBRID_COMMAND_UPLOAD_FILE:{ + Object handleObject = intent.getSerializableExtra("EXTRA_HANDLE"); + if(handleObject == null)return; + if(handleObject instanceof String){ + handleObject = FileHandle.fromName((String)handleObject); + } + if(!(handleObject instanceof FileHandle)) return; + FileHandle handle = (FileHandle) handleObject; + String filePath = intent.getStringExtra("EXTRA_PATH"); + watchAdapter.uploadFile(handle, filePath, intent.getBooleanExtra("EXTRA_ENCRYPTED", false)); + break; + } } } }; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/file/FileHandle.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/file/FileHandle.java index 882e8984b..d6054fecc 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/file/FileHandle.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/file/FileHandle.java @@ -48,6 +48,15 @@ public enum FileHandle { this.subHandle = subHandle; } + public static FileHandle fromName(String name){ + for(FileHandle handle : FileHandle.values()){ + if(handle.toString().equals(name)){ + return handle; + } + } + return null; + } + public short getHandle(){ return (short)((handle << 8) | (subHandle)); }