summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Taylor <tomtaylor@google.com>2012-10-09 10:25:33 -0700
committerTom Taylor <tomtaylor@google.com>2012-10-09 10:30:03 -0700
commit9889006f9d29d0509c1c036987ce028de43ac96e (patch)
tree833c9aaedfeb05cd7193ab9174e2418f602122c5
parent259b5eabd47d87f68bc1285e1de60747bf21fa2b (diff)
downloadMms-9889006f9d29d0509c1c036987ce028de43ac96e.tar.gz
Add setting to turn on/off group MMS
Bug 6970173 Add a setting/preference to turn on/off group MMS. If group mms is disabled by mms_config.xml, the preference is hidden from the user (this is consistent with other mms features disabled by carriers). When group mms is disabled, receiving a group mms is also disabled. In other words, the received message will appear to have come from a thread with only the sender and not in a thread with the sender + the other recipients. Change-Id: I9510ae269f7b3968c768c7b5f5cf8dcc7fe4eca6
-rw-r--r--res/values/strings.xml4
-rw-r--r--res/xml/preferences.xml4
-rwxr-xr-xsrc/com/android/mms/MmsConfig.java4
-rwxr-xr-xsrc/com/android/mms/data/WorkingMessage.java18
-rw-r--r--src/com/android/mms/transaction/MmsMessageSender.java4
-rw-r--r--src/com/android/mms/transaction/NotificationTransaction.java7
-rw-r--r--src/com/android/mms/transaction/PushReceiver.java7
-rw-r--r--src/com/android/mms/transaction/RetrieveTransaction.java4
-rw-r--r--src/com/android/mms/ui/ComposeMessageActivity.java4
-rwxr-xr-xsrc/com/android/mms/ui/MessagingPreferenceActivity.java19
10 files changed, 57 insertions, 18 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1bccb0f2..d3e2c133 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -328,10 +328,14 @@
<string name="pref_summary_auto_delete">Delete old messages as limits are reached</string>
<!-- Settings item description for integer auto-delete sms message limit -->
<string name="pref_summary_delete_limit"><xliff:g id="count">%1$s</xliff:g> messages per conversation</string>
+ <!-- Settings item description for boolean MMS enable group MMS setting -->
+ <string name="pref_summary_mms_group_mms">Use MMS to send a single message when there are multiple recipients</string>
<!-- Settings item for entering SIM card message screen -->
<string name="pref_title_manage_sim_messages">Manage SIM card messages</string>
<!-- Settings item for boolean option to enable/disable MMS delivery reports -->
<string name="pref_title_mms_delivery_reports">Delivery reports</string>
+ <!-- Settings item for boolean option to enable/disable MMS group messages -->
+ <string name="pref_title_mms_group_mms">Group messaging</string>
<!-- Settings item for boolean option to enable/disable MMS read reports -->
<string name="pref_title_mms_read_reports">Read reports</string>
<!-- Settings item for boolean option to enable/disable SMS delivery reports -->
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index 75a5e7aa..fd80c5a1 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -52,6 +52,10 @@
</PreferenceCategory>
<PreferenceCategory android:title="@string/pref_mms_settings_title"
android:key="pref_key_mms_settings">
+ <CheckBoxPreference android:defaultValue="true"
+ android:key="pref_key_mms_group_mms"
+ android:summary="@string/pref_summary_mms_group_mms"
+ android:title="@string/pref_title_mms_group_mms" />
<CheckBoxPreference android:defaultValue="false"
android:key="pref_key_mms_delivery_reports"
android:summary="@string/pref_summary_mms_delivery_reports"
diff --git a/src/com/android/mms/MmsConfig.java b/src/com/android/mms/MmsConfig.java
index 3179c624..2c34af8b 100755
--- a/src/com/android/mms/MmsConfig.java
+++ b/src/com/android/mms/MmsConfig.java
@@ -97,6 +97,8 @@ public class MmsConfig {
// If mEnableGroupMms is true, a message with multiple recipients, regardless of contents,
// will be sent as a single MMS message with multiple "TO" fields set for each recipient.
+ // If mEnableGroupMms is false, the group MMS setting/preference will be hidden in the settings
+ // activity.
private static boolean mEnableGroupMms = true;
public static void init(Context context) {
@@ -323,7 +325,7 @@ public class MmsConfig {
mEnableSMSDeliveryReports = "true".equalsIgnoreCase(text);
} else if ("enableMMSDeliveryReports".equalsIgnoreCase(value)) {
mEnableMMSDeliveryReports = "true".equalsIgnoreCase(text);
- } else if ("enableGroupMmms".equalsIgnoreCase(value)) {
+ } else if ("enableGroupMms".equalsIgnoreCase(value)) {
mEnableGroupMms = "true".equalsIgnoreCase(text);
}
} else if ("int".equals(tag)) {
diff --git a/src/com/android/mms/data/WorkingMessage.java b/src/com/android/mms/data/WorkingMessage.java
index 4f8d61f4..8ad6390a 100755
--- a/src/com/android/mms/data/WorkingMessage.java
+++ b/src/com/android/mms/data/WorkingMessage.java
@@ -58,6 +58,7 @@ import com.android.mms.transaction.MmsMessageSender;
import com.android.mms.transaction.SmsMessageSender;
import com.android.mms.ui.ComposeMessageActivity;
import com.android.mms.ui.MessageUtils;
+import com.android.mms.ui.MessagingPreferenceActivity;
import com.android.mms.ui.SlideshowEditor;
import com.android.mms.util.DraftCache;
import com.android.mms.util.Recycler;
@@ -836,7 +837,8 @@ public class WorkingMessage {
// If we don't already have a Uri lying around, make a new one. If we do
// have one already, make sure it is synced to disk.
if (mMessageUri == null) {
- mMessageUri = createDraftMmsMessage(persister, sendReq, mSlideshow, null);
+ mMessageUri = createDraftMmsMessage(persister, sendReq, mSlideshow, null,
+ mActivity);
} else {
updateDraftMmsMessage(mMessageUri, persister, mSlideshow, sendReq);
}
@@ -1058,7 +1060,9 @@ public class WorkingMessage {
* attachment") still hold true.
*/
public void setHasMultipleRecipients(boolean hasMultipleRecipients, boolean notify) {
- updateState(MULTIPLE_RECIPIENTS, MmsConfig.getGroupMmsEnabled() && hasMultipleRecipients,
+ updateState(MULTIPLE_RECIPIENTS,
+ hasMultipleRecipients &&
+ MessagingPreferenceActivity.getIsGroupMmsEnabled(mActivity),
notify);
}
@@ -1407,7 +1411,7 @@ public class WorkingMessage {
try {
if (newMessage) {
// Create a new MMS message if one hasn't been made yet.
- mmsUri = createDraftMmsMessage(persister, sendReq, slideshow, mmsUri);
+ mmsUri = createDraftMmsMessage(persister, sendReq, slideshow, mmsUri, mActivity);
} else {
// Otherwise, sync the MMS message in progress to disk.
updateDraftMmsMessage(mmsUri, persister, slideshow, sendReq);
@@ -1541,14 +1545,15 @@ public class WorkingMessage {
}
private static Uri createDraftMmsMessage(PduPersister persister, SendReq sendReq,
- SlideshowModel slideshow, Uri preUri) {
+ SlideshowModel slideshow, Uri preUri, Context context) {
if (slideshow == null) {
return null;
}
try {
PduBody pb = slideshow.toPduBody();
sendReq.setBody(pb);
- Uri res = persister.persist(sendReq, preUri == null ? Mms.Draft.CONTENT_URI : preUri);
+ Uri res = persister.persist(sendReq, preUri == null ? Mms.Draft.CONTENT_URI : preUri,
+ true, MessagingPreferenceActivity.getIsGroupMmsEnabled(context));
slideshow.sync(pb);
return res;
} catch (MmsException e) {
@@ -1571,7 +1576,8 @@ public class WorkingMessage {
final SendReq sendReq = makeSendReq(conv, mSubject);
if (mMessageUri == null) {
- mMessageUri = createDraftMmsMessage(persister, sendReq, mSlideshow, null);
+ mMessageUri = createDraftMmsMessage(persister, sendReq, mSlideshow, null,
+ mActivity);
} else {
updateDraftMmsMessage(mMessageUri, persister, mSlideshow, sendReq);
}
diff --git a/src/com/android/mms/transaction/MmsMessageSender.java b/src/com/android/mms/transaction/MmsMessageSender.java
index 531cc028..5632ce01 100644
--- a/src/com/android/mms/transaction/MmsMessageSender.java
+++ b/src/com/android/mms/transaction/MmsMessageSender.java
@@ -30,6 +30,7 @@ import android.provider.Telephony.MmsSms.PendingMessages;
import android.util.Log;
import com.android.mms.LogTag;
+import com.android.mms.ui.ComposeMessageActivity;
import com.android.mms.ui.MessagingPreferenceActivity;
import com.android.mms.util.SendingProgressTokenManager;
import com.google.android.mms.InvalidHeaderValueException;
@@ -161,7 +162,8 @@ public class MmsMessageSender implements MessageSender {
readRec.setDate(System.currentTimeMillis() / 1000);
- PduPersister.getPduPersister(context).persist(readRec, Mms.Outbox.CONTENT_URI);
+ PduPersister.getPduPersister(context).persist(readRec, Mms.Outbox.CONTENT_URI, true,
+ MessagingPreferenceActivity.getIsGroupMmsEnabled(context));
context.startService(new Intent(context, TransactionService.class));
} catch (InvalidHeaderValueException e) {
Log.e(TAG, "Invalide header value", e);
diff --git a/src/com/android/mms/transaction/NotificationTransaction.java b/src/com/android/mms/transaction/NotificationTransaction.java
index 1b0bd4a8..b05c8f42 100644
--- a/src/com/android/mms/transaction/NotificationTransaction.java
+++ b/src/com/android/mms/transaction/NotificationTransaction.java
@@ -39,6 +39,7 @@ import android.util.Log;
import com.android.mms.MmsApp;
import com.android.mms.MmsConfig;
+import com.android.mms.ui.MessagingPreferenceActivity;
import com.android.mms.util.DownloadManager;
import com.android.mms.util.Recycler;
import com.android.mms.widget.MmsWidgetProvider;
@@ -110,7 +111,8 @@ public class NotificationTransaction extends Transaction implements Runnable {
// Save the pdu. If we can start downloading the real pdu immediately, don't allow
// persist() to create a thread for the notificationInd because it causes UI jank.
mUri = PduPersister.getPduPersister(context).persist(
- ind, Inbox.CONTENT_URI, !allowAutoDownload());
+ ind, Inbox.CONTENT_URI, !allowAutoDownload(),
+ MessagingPreferenceActivity.getIsGroupMmsEnabled(context));
} catch (MmsException e) {
Log.e(TAG, "Failed to save NotificationInd in constructor.", e);
throw new IllegalArgumentException();
@@ -181,7 +183,8 @@ public class NotificationTransaction extends Transaction implements Runnable {
} else {
// Save the received PDU (must be a M-RETRIEVE.CONF).
PduPersister p = PduPersister.getPduPersister(mContext);
- Uri uri = p.persist(pdu, Inbox.CONTENT_URI);
+ Uri uri = p.persist(pdu, Inbox.CONTENT_URI, true,
+ MessagingPreferenceActivity.getIsGroupMmsEnabled(mContext));
// Use local time instead of PDU time
ContentValues values = new ContentValues(1);
diff --git a/src/com/android/mms/transaction/PushReceiver.java b/src/com/android/mms/transaction/PushReceiver.java
index b09573f7..ba98ff91 100644
--- a/src/com/android/mms/transaction/PushReceiver.java
+++ b/src/com/android/mms/transaction/PushReceiver.java
@@ -37,6 +37,7 @@ import android.provider.Telephony.Mms.Inbox;
import android.util.Log;
import com.android.mms.MmsConfig;
+import com.android.mms.ui.MessagingPreferenceActivity;
import com.google.android.mms.ContentType;
import com.google.android.mms.MmsException;
import com.google.android.mms.pdu.DeliveryInd;
@@ -92,7 +93,8 @@ public class PushReceiver extends BroadcastReceiver {
break;
}
- Uri uri = p.persist(pdu, Inbox.CONTENT_URI);
+ Uri uri = p.persist(pdu, Inbox.CONTENT_URI, true,
+ MessagingPreferenceActivity.getIsGroupMmsEnabled(mContext));
// Update thread ID for ReadOrigInd & DeliveryInd.
ContentValues values = new ContentValues(1);
values.put(Mms.THREAD_ID, threadId);
@@ -121,7 +123,8 @@ public class PushReceiver extends BroadcastReceiver {
// don't allow persist() to create a thread for the notificationInd
// because it causes UI jank.
Uri uri = p.persist(pdu, Inbox.CONTENT_URI,
- !NotificationTransaction.allowAutoDownload());
+ !NotificationTransaction.allowAutoDownload(),
+ MessagingPreferenceActivity.getIsGroupMmsEnabled(mContext));
// Start service to finish the notification transaction.
Intent svc = new Intent(mContext, TransactionService.class);
diff --git a/src/com/android/mms/transaction/RetrieveTransaction.java b/src/com/android/mms/transaction/RetrieveTransaction.java
index b055841b..fa0a5a8b 100644
--- a/src/com/android/mms/transaction/RetrieveTransaction.java
+++ b/src/com/android/mms/transaction/RetrieveTransaction.java
@@ -31,6 +31,7 @@ import android.util.Log;
import com.android.mms.MmsConfig;
import com.android.mms.ui.MessageUtils;
+import com.android.mms.ui.MessagingPreferenceActivity;
import com.android.mms.util.DownloadManager;
import com.android.mms.util.Recycler;
import com.android.mms.widget.MmsWidgetProvider;
@@ -149,7 +150,8 @@ public class RetrieveTransaction extends Transaction implements Runnable {
} else {
// Store M-Retrieve.conf into Inbox
PduPersister persister = PduPersister.getPduPersister(mContext);
- msgUri = persister.persist(retrieveConf, Inbox.CONTENT_URI);
+ msgUri = persister.persist(retrieveConf, Inbox.CONTENT_URI, true,
+ MessagingPreferenceActivity.getIsGroupMmsEnabled(mContext));
// Use local time instead of PDU time
ContentValues values = new ContentValues(1);
diff --git a/src/com/android/mms/ui/ComposeMessageActivity.java b/src/com/android/mms/ui/ComposeMessageActivity.java
index 58e7d9fc..f14531c7 100644
--- a/src/com/android/mms/ui/ComposeMessageActivity.java
+++ b/src/com/android/mms/ui/ComposeMessageActivity.java
@@ -1195,7 +1195,9 @@ public class ComposeMessageActivity extends Activity
PduPersister persister =
PduPersister.getPduPersister(ComposeMessageActivity.this);
// Copy the parts of the message here.
- mTempMmsUri = persister.persist(sendReq, Mms.Draft.CONTENT_URI);
+ mTempMmsUri = persister.persist(sendReq, Mms.Draft.CONTENT_URI, true,
+ MessagingPreferenceActivity
+ .getIsGroupMmsEnabled(ComposeMessageActivity.this));
mTempThreadId = MessagingNotification.getThreadId(
ComposeMessageActivity.this, mTempMmsUri);
} catch (MmsException e) {
diff --git a/src/com/android/mms/ui/MessagingPreferenceActivity.java b/src/com/android/mms/ui/MessagingPreferenceActivity.java
index de81d9bc..34f94910 100755
--- a/src/com/android/mms/ui/MessagingPreferenceActivity.java
+++ b/src/com/android/mms/ui/MessagingPreferenceActivity.java
@@ -62,6 +62,7 @@ public class MessagingPreferenceActivity extends PreferenceActivity
public static final String AUTO_RETRIEVAL = "pref_key_mms_auto_retrieval";
public static final String RETRIEVAL_DURING_ROAMING = "pref_key_mms_retrieval_during_roaming";
public static final String AUTO_DELETE = "pref_key_auto_delete";
+ public static final String GROUP_MMS_MODE = "pref_key_mms_group_mms";
// Menu entries
private static final int MENU_RESTORE_DEFAULTS = 1;
@@ -70,6 +71,7 @@ public class MessagingPreferenceActivity extends PreferenceActivity
private Preference mSmsDeliveryReportPref;
private Preference mMmsLimitPref;
private Preference mMmsDeliveryReportPref;
+ private Preference mMmsGroupMmsPref;
private Preference mMmsReadReportPref;
private Preference mManageSimPref;
private Preference mClearHistoryPref;
@@ -109,6 +111,7 @@ public class MessagingPreferenceActivity extends PreferenceActivity
mSmsLimitPref = findPreference("pref_key_sms_delete_limit");
mSmsDeliveryReportPref = findPreference("pref_key_sms_delivery_reports");
mMmsDeliveryReportPref = findPreference("pref_key_mms_delivery_reports");
+ mMmsGroupMmsPref = findPreference("pref_key_mms_group_mms");
mMmsReadReportPref = findPreference("pref_key_mms_read_reports");
mMmsLimitPref = findPreference("pref_key_mms_delete_limit");
mClearHistoryPref = findPreference("pref_key_mms_clear_history");
@@ -163,16 +166,17 @@ public class MessagingPreferenceActivity extends PreferenceActivity
(PreferenceCategory)findPreference("pref_key_storage_settings");
storageOptions.removePreference(findPreference("pref_key_mms_delete_limit"));
} else {
- if (!MmsConfig.getMMSDeliveryReportsEnabled()) {
- PreferenceCategory mmsOptions =
+ PreferenceCategory mmsOptions =
(PreferenceCategory)findPreference("pref_key_mms_settings");
+ if (!MmsConfig.getMMSDeliveryReportsEnabled()) {
mmsOptions.removePreference(mMmsDeliveryReportPref);
}
if (!MmsConfig.getMMSReadReportsEnabled()) {
- PreferenceCategory mmsOptions =
- (PreferenceCategory)findPreference("pref_key_mms_settings");
mmsOptions.removePreference(mMmsReadReportPref);
}
+ if (!MmsConfig.getGroupMmsEnabled()) {
+ mmsOptions.removePreference(mMmsGroupMmsPref);
+ }
}
setEnabledNotificationsPref();
@@ -360,4 +364,11 @@ public class MessagingPreferenceActivity extends PreferenceActivity
}
mVibrateWhenPref.setSummary(null);
}
+
+ public static boolean getIsGroupMmsEnabled(Context context) {
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ boolean groupMmsPrefOn = prefs.getBoolean(
+ MessagingPreferenceActivity.GROUP_MMS_MODE, true);
+ return MmsConfig.getGroupMmsEnabled() && groupMmsPrefOn;
+ }
}