From fa59dfe72eeac7f0d5dcd61d1f8aea5d4ade2619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Sat, 16 Mar 2024 18:42:41 +0000 Subject: [PATCH] Bangle.js: Add saveFile javascript interface --- .../devices/banglejs/AppsManagementActivity.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 3470b7803..9137fc6ba 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 @@ -171,6 +171,13 @@ public class AppsManagementActivity extends AbstractGBActivity { LOG.info("WebView RX: " + data); bangleTxData(data); } + + /// Called from the WebView to download a file + @JavascriptInterface + public void saveFile(String filename, String mimetype, String b64) { + LOG.info("WebView save file: {}", filename); + showSaveFileDialog(filename, mimetype, Base64.decode(b64, Base64.DEFAULT)); + } } // Called when data received from Bangle.js - push data to the WebView @@ -196,7 +203,7 @@ public class AppsManagementActivity extends AbstractGBActivity { LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } - public void showSaveFileDialog(String fileName, String mimeType, byte data[]) { + public void showSaveFileDialog(String fileName, String mimeType, byte[] data) { Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); if (mimeType!=null) intent.setType(mimeType);