summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorallu.haribabu <allu.haribabu@gmail.com>2016-05-19 14:55:51 +0530
committerGerrit Code Review <gerrit@cyanogenmod.org>2016-05-24 16:50:18 -0700
commit88b174ec24c702fe82b41bed285eb9d9d3e7bc60 (patch)
treeac9469ecef37dc4146966c2708270bf3c9d92464
parent54374cf69dd80bc21aea0574c4f91706b810a5be (diff)
downloadandroid_packages_apps_Messaging-88b174ec24c702fe82b41bed285eb9d9d3e7bc60.tar.gz
android_packages_apps_Messaging-88b174ec24c702fe82b41bed285eb9d9d3e7bc60.tar.bz2
android_packages_apps_Messaging-88b174ec24c702fe82b41bed285eb9d9d3e7bc60.zip
[SMS] Replace message content can't be replaced
SMS replacing feature is missing on 13.0 Added support for this. Change-Id: Ib03111685f420c205542b7af28c553ff18480358 Issue-Id: FEIJ-401
-rw-r--r--src/com/android/messaging/datamodel/action/ReceiveSmsMessageAction.java51
-rw-r--r--src/com/android/messaging/receiver/SmsReceiver.java10
-rw-r--r--src/com/android/messaging/ui/ClassZeroActivity.java2
3 files changed, 57 insertions, 6 deletions
diff --git a/src/com/android/messaging/datamodel/action/ReceiveSmsMessageAction.java b/src/com/android/messaging/datamodel/action/ReceiveSmsMessageAction.java
index b8c97b9..ea70250 100644
--- a/src/com/android/messaging/datamodel/action/ReceiveSmsMessageAction.java
+++ b/src/com/android/messaging/datamodel/action/ReceiveSmsMessageAction.java
@@ -17,7 +17,9 @@
package com.android.messaging.datamodel.action;
import android.content.ContentValues;
+import android.content.ContentUris;
import android.content.Context;
+import android.database.Cursor;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
@@ -44,18 +46,21 @@ public class ReceiveSmsMessageAction extends Action implements Parcelable {
private static final String TAG = LogUtil.BUGLE_DATAMODEL_TAG;
private static final String KEY_MESSAGE_VALUES = "message_values";
+ private static final String KEY_MESSAGE_REPLACEABLE = "message_replaceable";
/**
* Create a message received from a particular number in a particular conversation
*/
- public ReceiveSmsMessageAction(final ContentValues messageValues) {
+ public ReceiveSmsMessageAction(final ContentValues messageValues, final boolean isReplaceable) {
actionParameters.putParcelable(KEY_MESSAGE_VALUES, messageValues);
+ actionParameters.putBoolean(KEY_MESSAGE_REPLACEABLE, isReplaceable);
}
@Override
protected Object executeAction() {
final Context context = Factory.get().getApplicationContext();
final ContentValues messageValues = actionParameters.getParcelable(KEY_MESSAGE_VALUES);
+ final boolean mReplaceable = actionParameters.getBoolean(KEY_MESSAGE_REPLACEABLE);
final DatabaseWrapper db = DataModel.get().getDatabase();
// Get the SIM subscription ID
@@ -109,9 +114,47 @@ public class ReceiveSmsMessageAction extends Action implements Parcelable {
messageValues.put(Sms.Inbox.SEEN, 1);
// Insert into telephony
- final Uri messageUri = context.getContentResolver().insert(Sms.Inbox.CONTENT_URI,
- messageValues);
-
+ Uri messageUri = null;
+ LogUtil.d("MessageReplaceFeature", "SMS Message Replaceable : " + mReplaceable);
+ if (mReplaceable) {
+ // This must match the column IDs below.
+ String[] REPLACE_PROJECTION = new String[]{
+ Sms._ID,
+ Sms.ADDRESS,
+ Sms.PROTOCOL
+ };
+ int REPLACE_COLUMN_ID = 0;
+ String selection;
+ String[] selectionArgs;
+ selection = Sms.ADDRESS + " = ? AND " +
+ Sms.PROTOCOL + " = ? AND " +
+ Sms.SUBSCRIPTION_ID + " = ? ";
+ selectionArgs = new String[]{
+ messageValues.getAsString(Sms.ADDRESS),
+ messageValues.getAsString(Sms.PROTOCOL),
+ messageValues.getAsString(Sms.SUBSCRIPTION_ID)
+ };
+ Cursor cursor = context.getContentResolver().query(Sms.Inbox.CONTENT_URI,
+ REPLACE_PROJECTION, selection, selectionArgs, null);
+ LogUtil.d("MessageReplaceFeature", "cursor != null " + cursor.getCount());
+ if (cursor != null) {
+ try {
+ if (cursor.moveToFirst()) {
+ long messageId = cursor.getLong(REPLACE_COLUMN_ID);
+ messageUri = ContentUris.withAppendedId(
+ Sms.CONTENT_URI, messageId);
+ LogUtil.d("MessageReplaceFeature", "sms messageUri : " + messageUri.toString());
+ context.getContentResolver().update(messageUri,
+ messageValues, null, null);
+ }
+ } finally {
+ cursor.close();
+ }
+ }
+ } else {
+ messageUri = context.getContentResolver().insert(Sms.Inbox.CONTENT_URI,
+ messageValues);
+ }
if (messageUri != null) {
if (LogUtil.isLoggable(TAG, LogUtil.DEBUG)) {
LogUtil.d(TAG, "ReceiveSmsMessageAction: Inserted SMS message into telephony, "
diff --git a/src/com/android/messaging/receiver/SmsReceiver.java b/src/com/android/messaging/receiver/SmsReceiver.java
index db9b4bb..a8f25b7 100644
--- a/src/com/android/messaging/receiver/SmsReceiver.java
+++ b/src/com/android/messaging/receiver/SmsReceiver.java
@@ -199,6 +199,14 @@ public final class SmsReceiver extends BroadcastReceiver {
public static void deliverSmsMessages(final Context context, final int subId,
final int errorCode, final android.telephony.SmsMessage[] messages) {
+ final android.telephony.SmsMessage sms = messages[0];
+ boolean isReplaceable = false;
+ LogUtil.d("MessageReplaceFeature", "Is SMS Message Replaceable : " + sms.isReplace());
+ if(sms.isReplace()) {
+ isReplaceable = true;
+ } else {
+ isReplaceable = false;
+ }
final ContentValues messageValues =
MmsUtils.parseReceivedSmsMessage(context, messages, errorCode);
@@ -220,7 +228,7 @@ public final class SmsReceiver extends BroadcastReceiver {
DebugUtils.debugClassZeroSmsEnabled()) {
Factory.get().getUIIntents().launchClassZeroActivity(context, messageValues);
} else {
- final ReceiveSmsMessageAction action = new ReceiveSmsMessageAction(messageValues);
+ final ReceiveSmsMessageAction action = new ReceiveSmsMessageAction(messageValues, isReplaceable);
action.start();
}
}
diff --git a/src/com/android/messaging/ui/ClassZeroActivity.java b/src/com/android/messaging/ui/ClassZeroActivity.java
index ccb15a0..7698ce6 100644
--- a/src/com/android/messaging/ui/ClassZeroActivity.java
+++ b/src/com/android/messaging/ui/ClassZeroActivity.java
@@ -107,7 +107,7 @@ public class ClassZeroActivity extends Activity {
private void saveMessage() {
mMessageValues.put(Sms.Inbox.READ, mRead ? Integer.valueOf(1) : Integer.valueOf(0));
- final ReceiveSmsMessageAction action = new ReceiveSmsMessageAction(mMessageValues);
+ final ReceiveSmsMessageAction action = new ReceiveSmsMessageAction(mMessageValues, false);
action.start();
}