From a545c566807ef9e880aac2e9024efea25cf6da1b Mon Sep 17 00:00:00 2001 From: Daniele Gobbetti Date: Sun, 26 Feb 2017 17:57:26 +0100 Subject: [PATCH] Pebble: ack the messages that go to the webview and do not destroy it on disconnect. --- .../devices/pebble/PebbleIoThread.java | 1 + .../gadgetbridge/util/WebViewSingleton.java | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java index 6f3348d64..569b17d08 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java @@ -84,6 +84,7 @@ class PebbleIoThread extends GBDeviceIoThread { private void sendAppMessageJS(GBDeviceEventAppMessage appMessage) { // WebViewSingleton.runJavascriptInterface(gbDevice, appMessage.appUUID); WebViewSingleton.appMessage(appMessage.message); + write(mPebbleProtocol.encodeApplicationMessageAck(appMessage.appUUID, (byte) appMessage.id)); } PebbleIoThread(PebbleSupport pebbleSupport, GBDevice gbDevice, GBDeviceProtocol gbDeviceProtocol, BluetoothAdapter btAdapter, Context context) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/WebViewSingleton.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/WebViewSingleton.java index b3cf91a84..7cc7a636a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/WebViewSingleton.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/WebViewSingleton.java @@ -105,10 +105,11 @@ public class WebViewSingleton { } } - public static void appMessage(final String message) { + public static void appMessage(String message) { if (instance == null) return; + final String appMessage = jsInterface.parseIncomingAppMessage(message); LOG.debug("to WEBVIEW: " + appMessage); @@ -119,7 +120,8 @@ public class WebViewSingleton { instance.evaluateJavascript("Pebble.evaluate('appmessage',[" + appMessage + "]);", new ValueCallback() { @Override public void onReceiveValue(String s) { - LOG.debug("Callback from showConfiguration", s); + //TODO: the message should be acked here instead of in PebbleIoThread + LOG.debug("Callback from appmessage", s); } }); } else { @@ -141,9 +143,9 @@ public class WebViewSingleton { instance.loadUrl("about:blank"); instance.freeMemory(); instance.pauseTimers(); - instance.destroy(); - instance = null; - contextWrapper = null; +// instance.destroy(); +// instance = null; +// contextWrapper = null; jsInterface = null; } } @@ -258,6 +260,13 @@ public class WebViewSingleton { } jsAppMessage.put("payload", outgoing); + //ack message to pebble + + /* + sendBytesAck = new GBDeviceEventSendBytes(); + sendBytesAck.encodedBytes = encodeApplicationMessageAck(uuid, last_id); + */ + } catch (JSONException e) { e.printStackTrace(); }