private static void addChildNotifications( JSONArray dataArray, String summaryGroup, SQLiteDatabase writableDb) { String[] retColumn = {NotificationTable.COLUMN_NAME_FULL_DATA}; String[] whereArgs = {summaryGroup}; Cursor cursor = writableDb.query( NotificationTable.TABLE_NAME, retColumn, NotificationTable.COLUMN_NAME_GROUP_ID + " = ? AND " + // Where String NotificationTable.COLUMN_NAME_DISMISSED + " = 0 AND " + NotificationTable.COLUMN_NAME_OPENED + " = 0 AND " + NotificationTable.COLUMN_NAME_IS_SUMMARY + " = 0", whereArgs, null, null, null); if (cursor.getCount() > 1) { cursor.moveToFirst(); do { try { String jsonStr = cursor.getString(cursor.getColumnIndex(NotificationTable.COLUMN_NAME_FULL_DATA)); dataArray.put(new JSONObject(jsonStr)); } catch (Throwable t) { OneSignal.Log( OneSignal.LOG_LEVEL.ERROR, "Could not parse JSON of sub notification in group: " + summaryGroup); } } while (cursor.moveToNext()); } }
static void processIntent(Context inActivity, Intent inIntent) { activity = inActivity; intent = inIntent; String summaryGroup = intent.getStringExtra("summary"); boolean dismissed = intent.getBooleanExtra("dismissed", false); OneSignalDbHelper dbHelper = new OneSignalDbHelper(activity); SQLiteDatabase writableDb = dbHelper.getWritableDatabase(); JSONArray dataArray = null; if (!dismissed) { try { dataArray = NotificationBundleProcessor.newJsonArray( new JSONObject(intent.getStringExtra("onesignal_data"))); } catch (Throwable t) { t.printStackTrace(); } } // We just opened a summary notification. if (!dismissed && summaryGroup != null) addChildNotifications(dataArray, summaryGroup, writableDb); markNotificationsConsumed(writableDb); // Notification is not a summary type and is a single notification part of a group. if (summaryGroup == null && intent.getStringExtra("grp") != null) updateSummaryNotification(writableDb); writableDb.close(); if (!dismissed) OneSignal.handleNotificationOpened(activity, dataArray); }