Fixed issue with quotes in seizure description crashing the app

This commit is contained in:
Graham Jones
2022-05-28 21:24:17 +01:00
parent 03d3ea6269
commit 6525a8ee8e
3 changed files with 44 additions and 20 deletions

View File

@@ -1,5 +1,9 @@
OpenSeizureDetector Android App - Change Log OpenSeizureDetector Android App - Change Log
============================================ ============================================
V4.0.5 - Added support for 3D data logging
- Fixed issue with seizure reporting crashing if quotation marks included in text.
V4.0.4 - Added support for Data Sharing system
V3.6.2 - Nov 2020 V3.6.2 - Nov 2020
- Extended Polish translation further - Extended Polish translation further
- Improved system log output to help with answering queries from users. - Improved system log output to help with answering queries from users.

View File

@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
package="uk.org.openseizuredetector" package="uk.org.openseizuredetector"
android:versionCode="101" android:versionCode="101"
android:versionName="4.0.5a"> android:versionName="4.0.5b">
<!-- android:allowBackup="false" --> <!-- android:allowBackup="false" -->
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

View File

@@ -204,14 +204,24 @@ public class LogManager {
while (!c.isAfterLast()) { while (!c.isAfterLast()) {
JSONObject event = new JSONObject(); JSONObject event = new JSONObject();
try { try {
event.put("id", c.getString(c.getColumnIndex("id"))); String val;
event.put("dataTime", c.getString(c.getColumnIndex("dataTime"))); val = c.getString(c.getColumnIndex("id"));
event.put("status", c.getString(c.getColumnIndex("status"))); // We replace null values with empty string, otherwise they are completely excluded from output JSON.
event.put("type", c.getString(c.getColumnIndex("type"))); event.put("id", val==null ? "" : val );
event.put("subType", c.getString(c.getColumnIndex("subType"))); val = c.getString(c.getColumnIndex("dataTime"));
event.put("desc", c.getString(c.getColumnIndex("notes"))); event.put("dataTime", val==null ? "" : val);
event.put("dataJSON", c.getString(c.getColumnIndex("dataJSON"))); val = c.getString(c.getColumnIndex("status"));
event.put("uploaded", c.getString(c.getColumnIndex("uploaded"))); event.put("status", val==null ? "" : val);
val = c.getString(c.getColumnIndex("type"));
event.put("type", val==null ? "" : val);
val = c.getString(c.getColumnIndex("subType"));
event.put("subType", val==null ? "" : val);
val = c.getString(c.getColumnIndex("notes"));
event.put("desc", val==null ? "" : val);
val = c.getString(c.getColumnIndex("dataJSON"));
event.put("dataJSON", val==null ? "" : val);
val = c.getString(c.getColumnIndex("uploaded"));
event.put("uploaded", val==null ? "" : val);
c.moveToNext(); c.moveToNext();
eventsArray.put(i, event); eventsArray.put(i, event);
i++; i++;
@@ -315,17 +325,27 @@ public class LogManager {
// Expects dataTime to be in format: SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // Expects dataTime to be in format: SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Log.d(TAG, "createLocalEvent() - dataTime=" + dataTime + ", status=" + status + ", dataJSON="+dataJSON); Log.d(TAG, "createLocalEvent() - dataTime=" + dataTime + ", status=" + status + ", dataJSON="+dataJSON);
// Write Event to database // Write Event to database
String SQLStr = "INSERT INTO " + mEventsTableName //String SQLStr = "INSERT INTO " + mEventsTableName
+ "(dataTime, status, type, subtype, notes, dataJSON)" // + "(dataTime, status, type, subtype, notes, dataJSON)"
+ " VALUES(" // + " VALUES("
+ "'" + dataTime + "'," // + "'" + dataTime + "',"
+ status + "," // + status + ","
+ "'" + type + "'," // + "'" + type + "',"
+ "'" + subType + "'," // + "'" + subType + "',"
+ "'" + desc + "'," // + "'" + desc + "',"
+ "'" + dataJSON + "'" // + "'" + dataJSON + "'"
+ ")"; // + ")";
mOsdDb.execSQL(SQLStr); //mOsdDb.execSQL(SQLStr);
ContentValues values = new ContentValues();
values.put("dataTime", dataTime);
values.put("status", status);
values.put("type", type);
values.put("subType",subType);
values.put("notes",desc);
values.put("dataJSON", dataJSON);
long newRowId = mOsdDb.insert(mEventsTableName, null, values);
Log.d(TAG, "Created Row ID"+newRowId);
return true; return true;
} }