diff options
author | haribabu.allu <haribabu.allu@sasken.com> | 2016-03-23 17:02:08 +0530 |
---|---|---|
committer | Gerrit Code Review <gerrit@cyanogenmod.org> | 2016-04-05 21:30:21 -0700 |
commit | 56aafc2c7e7e7c20b3a9dbd81b6f38876b4b834a (patch) | |
tree | 4e9065799bee921e96b747bcae6c1eaf7cf65ae9 /src | |
parent | 8831d2c7c2d8da932f20f55ae079b20209999940 (diff) | |
download | android_packages_apps_Messaging-56aafc2c7e7e7c20b3a9dbd81b6f38876b4b834a.tar.gz android_packages_apps_Messaging-56aafc2c7e7e7c20b3a9dbd81b6f38876b4b834a.tar.bz2 android_packages_apps_Messaging-56aafc2c7e7e7c20b3a9dbd81b6f38876b4b834a.zip |
Added new feature SMS Validity Period
New preference field Validity Period is added in Messaging settings
ported from CyanogenMod 12.0 Messaging application to CyanogenMod 13.0
Bug: PAELLA-51
Change-Id: Ia53fdf36fbc18606ce512055445b68f580a312e2
Diffstat (limited to 'src')
4 files changed, 75 insertions, 1 deletions
diff --git a/src/com/android/messaging/sms/SmsSender.java b/src/com/android/messaging/sms/SmsSender.java index 889973f..5060ead 100644 --- a/src/com/android/messaging/sms/SmsSender.java +++ b/src/com/android/messaging/sms/SmsSender.java @@ -24,6 +24,7 @@ import android.net.Uri; import android.os.SystemClock; import android.telephony.PhoneNumberUtils; import android.telephony.SmsManager; +import android.telephony.SubscriptionManager; import android.text.TextUtils; import com.android.messaging.Factory; @@ -35,6 +36,7 @@ import com.android.messaging.util.BugleGservicesKeys; import com.android.messaging.util.LogUtil; import com.android.messaging.util.PhoneUtils; import com.android.messaging.util.UiUtils; +import com.cyanogenmod.messaging.util.PrefsUtils; import java.util.ArrayList; import java.util.Random; @@ -66,6 +68,7 @@ public class SmsSender { // Whether we should send multipart SMS as separate messages private static Boolean sSendMultipartSmsAsSeparateMessages = null; + private static int mPriority = 0; /** * Class that holds the sent status for all parts of a multipart message sending @@ -296,8 +299,15 @@ public class SmsSender { deliveryIntents.get(i)); } } else { + int validityPeriod = PrefsUtils.getValidityPeriod(SubscriptionManager.getPhoneId(subId)); + // Remove all attributes for CDMA international roaming. + if (PhoneUtils.getDefault().isCDMAInternationalRoaming(subId)) { + LogUtil.v(TAG, "sendMessage during CDMA international roaming."); + validityPeriod = -1; + mPriority = -1; + } smsManager.sendMultipartTextMessage( - dest, serviceCenter, messages, sentIntents, deliveryIntents); + dest, serviceCenter, messages, sentIntents, deliveryIntents, mPriority, false, validityPeriod); } } catch (final Exception e) { throw new SmsException("SmsSender: caught exception in sending " + e); diff --git a/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java b/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java index 20ffebf..81993a2 100644 --- a/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java +++ b/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java @@ -30,6 +30,7 @@ import android.preference.PreferenceScreen; import android.preference.RingtonePreference; import android.preference.SwitchPreference; import android.preference.TwoStatePreference; +import android.preference.ListPreference; import android.provider.Settings; import android.support.v4.app.NavUtils; import android.text.TextUtils; @@ -100,6 +101,10 @@ public class ApplicationSettingsActivity extends BugleActionBarActivity { private boolean mIsSmsPreferenceClicked; private String mSwipeRightToDeleteConversationkey; private SwitchPreference mSwipeRightToDeleteConversationPreference; + private ListPreference mSmsValidityPref; + private ListPreference mSmsValidityCard1Pref; + private ListPreference mSmsValidityCard2Pref; + public ApplicationSettingsFragment() { // Required empty constructor @@ -124,6 +129,22 @@ public class ApplicationSettingsActivity extends BugleActionBarActivity { mSmsDisabledPreference = findPreference(mSmsDisabledPrefKey); mSmsEnabledPrefKey = getString(R.string.sms_enabled_pref_key); mSmsEnabledPreference = findPreference(mSmsEnabledPrefKey); + mSmsValidityPref = (ListPreference) findPreference("pref_key_sms_validity_period"); + mSmsValidityCard1Pref = (ListPreference) findPreference("pref_key_sms_validity_period_slot1"); + mSmsValidityCard2Pref = (ListPreference) findPreference("pref_key_sms_validity_period_slot2"); + + if (getResources().getBoolean(R.bool.config_sms_validity)) { + if (PhoneUtils.getDefault().isMultiSimEnabledMms()) { + getPreferenceScreen().removePreference(mSmsValidityPref); + } else { + getPreferenceScreen().removePreference(mSmsValidityCard1Pref); + getPreferenceScreen().removePreference(mSmsValidityCard2Pref); + } + } else { + getPreferenceScreen().removePreference(mSmsValidityPref); + getPreferenceScreen().removePreference(mSmsValidityCard1Pref); + getPreferenceScreen().removePreference(mSmsValidityCard2Pref); + } mSwipeRightToDeleteConversationkey = getString( R.string.swipe_right_deletes_conversation_key); mSwipeRightToDeleteConversationPreference = diff --git a/src/com/android/messaging/util/PhoneUtils.java b/src/com/android/messaging/util/PhoneUtils.java index 726f083..0fa1f90 100644 --- a/src/com/android/messaging/util/PhoneUtils.java +++ b/src/com/android/messaging/util/PhoneUtils.java @@ -1008,4 +1008,29 @@ public abstract class PhoneUtils { } return null; } + + /** + * Decide whether the current product is DSDS in MMS + */ + public static boolean isMultiSimEnabledMms() { + return TelephonyManager.getDefault().isMultiSimEnabled(); + } + + private static boolean isCDMAPhone(int subscription) { + int activePhone = isMultiSimEnabledMms() + ? TelephonyManager.getDefault().getCurrentPhoneType(subscription) + : TelephonyManager.getDefault().getPhoneType(); + return activePhone == TelephonyManager.PHONE_TYPE_CDMA; + } + + private static boolean isNetworkRoaming(int subscription) { + return isMultiSimEnabledMms() + ? TelephonyManager.getDefault().isNetworkRoaming(subscription) + : TelephonyManager.getDefault().isNetworkRoaming(); + } + + public static boolean isCDMAInternationalRoaming(int subscription) { + return isCDMAPhone(subscription) && isNetworkRoaming(subscription); + } + } diff --git a/src/com/cyanogenmod/messaging/util/PrefsUtils.java b/src/com/cyanogenmod/messaging/util/PrefsUtils.java index 0cd0899..4afbb6d 100644 --- a/src/com/cyanogenmod/messaging/util/PrefsUtils.java +++ b/src/com/cyanogenmod/messaging/util/PrefsUtils.java @@ -23,6 +23,7 @@ import com.android.messaging.Factory; import com.android.messaging.R; import com.android.messaging.util.BuglePrefs; import com.android.messaging.util.UnicodeFilter; +import com.android.messaging.util.PhoneUtils; public class PrefsUtils { @@ -82,4 +83,21 @@ public class PrefsUtils { } return null; } + + public static int getValidityPeriod(int slot) { + final BuglePrefs prefs = BuglePrefs.getApplicationPrefs(); + final Context context = Factory.get().getApplicationContext(); + String validityPeriod = context.getString(R.string.def_sms_validity_period_value); + String prefKey = context.getString(R.string.pref_key_sms_validity_period); + + if (PhoneUtils.getDefault().isMultiSimEnabledMms()) { + String prefKeySlot1 = context.getString(R.string.pref_key_sms_validity_period_slot1); + String prefKeySlot2 = context.getString(R.string.pref_key_sms_validity_period_slot2); + validityPeriod = prefs.getString((slot == 0) ? prefKeySlot1 : prefKeySlot2, null); + } else { + validityPeriod = prefs.getString(prefKey, null); + } + return (validityPeriod == null) ? -1 : Integer.parseInt(validityPeriod); + } + } |