From 62c196eb1dcf93c3eeac210e7e063d4eff6b581c Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Tue, 8 Dec 2015 13:23:07 +0100 Subject: [PATCH] Pebble: determine pbw type early for correct display in pbw-cache on firmware 3.x --- .../devices/pebble/PBWReader.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/PBWReader.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/PBWReader.java index efeeb334..38811e65 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/PBWReader.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/PBWReader.java @@ -120,11 +120,17 @@ public class PBWReader { } } + String appName = null; + String appCreator = null; + String appVersion = null; + UUID appUUID = null; + ZipInputStream zis = new ZipInputStream(fin); ZipEntry ze; pebbleInstallables = new ArrayList<>(); byte[] buffer = new byte[1024]; int count; + try { while ((ze = zis.getNextEntry()) != null) { String fileName = ze.getName(); @@ -186,15 +192,10 @@ public class PBWReader { String jsonString = baos.toString(); try { JSONObject json = new JSONObject(jsonString); - String appName = json.getString("shortName"); - String appCreator = json.getString("companyName"); - String appVersion = json.getString("versionLabel"); - UUID uuid = UUID.fromString(json.getString("uuid")); - if (appName != null && appCreator != null && appVersion != null) { - // FIXME: dont assume WATCHFACE - app = new GBDeviceApp(uuid, appName, appCreator, appVersion, GBDeviceApp.Type.WATCHFACE); - } - + appName = json.getString("shortName"); + appCreator = json.getString("companyName"); + appVersion = json.getString("versionLabel"); + appUUID = UUID.fromString(json.getString("uuid")); } catch (JSONException e) { isValid = false; e.printStackTrace(); @@ -223,6 +224,16 @@ public class PBWReader { } } zis.close(); + if (appUUID != null && appName != null && appCreator != null && appVersion != null) { + GBDeviceApp.Type appType = GBDeviceApp.Type.APP_GENERIC; + + if ((mFlags & 16) == 16) { + appType = GBDeviceApp.Type.APP_ACTIVITYTRACKER; + } else if ((mFlags & 1) == 1) { + appType = GBDeviceApp.Type.WATCHFACE; + } + app = new GBDeviceApp(appUUID, appName, appCreator, appVersion, appType); + } } catch (IOException e) { e.printStackTrace(); }