Android 系统 (127)---ODM 开发用户常见需求文档(一) ODM 开发用户常见需求文档(一)

ODM 开发用户常见需求文档(一)

Andorid6.0 ——

一:短信签名(在 vendor 下)


diff --git a/mediatek/proprietary/packages/apps/Mms/res/values-zh-rCN/strings_custon_mms_signature.xml b/mediatek/proprietary/packages/apps/Mms/res/values-zh-rCN/strings_custon_mms_signature.xml
  1. new file mode 100644
  2. index 0000000.. 5af5489
  3. --- /dev/ null
  4. +++ b/mediatek/proprietary/packages/apps/Mms/res/values-zh-rCN/strings_custon_mms_signature.xml
  5. @@ - 0, 0 + 1, 10 @@
  6. +<?xml version= "1.0" encoding= "UTF-8"?>
  7. +<resources xmlns:android= "http://schemas.android.com/apk/res/android"
  8. + xmlns:xliff= "urn:oasis:names:tc:xliff:document:1.2">
  9. + <string name= "signature_text_hint"> "请输入签名"</string>
  10. + <string name= "signature_text_default"> "<这里填写短信签名>"</string>
  11. + <string name= "mms_signature_title"> "签名设置"</string>
  12. + <string name= "signature_title"> "签名选项"</string>
  13. + <string name= "signature_text_title"> "短信签名"</string>
  14. + <string name= "mms_signature_summary"> "当发送短信时,自动附加短信签名"</string>
  15. +</resources>
  16. diff --git a/mediatek/proprietary/packages/apps/Mms/res/values/strings_custon_mms_signature.xml b/mediatek/proprietary/packages/apps/Mms/res/values/strings_custon_mms_signature.xml
  17. new file mode 100644
  18. index 0000000.. 7ac7b9f
  19. --- /dev/ null
  20. +++ b/mediatek/proprietary/packages/apps/Mms/res/values/strings_custon_mms_signature.xml
  21. @@ - 0, 0 + 1, 10 @@
  22. +<?xml version= "1.0" encoding= "utf-8"?>
  23. +<resources xmlns:xliff= "urn:oasis:names:tc:xliff:document:1.2">
  24. + <string name= "signature_text_hint">Please enter a signature</string>
  25. + <string name= "signature_text_default"> "<这里填写短信签名>"</string>
  26. + <string name= "mms_signature_title"> "Signature Setting"</string>
  27. + <string name= "signature_title"> "Optional signature"</string>
  28. + <string name= "signature_text_title"> "SMS signature"</string>
  29. + <string name= "mms_signature_summary"> "Automatically append signature to every MMS message you send"</string>
  30. +</resources>
  31. +
  32. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/generalpreferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/generalpreferences.xml
  33. index 901c106.. 1b64ffa 100755
  34. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/generalpreferences.xml
  35. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/generalpreferences.xml
  36. @@ - 45, 6 + 45, 18 @@
  37. android:persistent= "false">
  38. </Preference>
  39. </PreferenceCategory>
  40. + <PreferenceCategory android:title= "@string/mms_signature_title"
  41. + android:key= "pref_key_mms_signature_settings">
  42. + <CheckBoxPreference android:defaultValue= "true"
  43. + android:key= "pref_key_signature_switch"
  44. + android:summary= "@string/mms_signature_summary"
  45. + android:title= "@string/signature_title" />
  46. + <Preference android:key= "pref_key_signature_text_editor"
  47. + android:title= "@string/signature_text_title"
  48. + android:dependency= "pref_key_signature_switch"
  49. + android:summary= "@string/signature_text_default"
  50. + android:persistent= "false"/>
  51. + </PreferenceCategory>
  52. <PreferenceCategory android:title= "@string/pref_title_wappush_settings"
  53. android:key= "pref_key_wappush_settings">
  54. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsMessageSender.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsMessageSender.java
  55. index b9f396d.. 1633a59 100644
  56. --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsMessageSender.java
  57. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsMessageSender.java
  58. @@ - 51, 7 + 51, 7 @@ public class SmsMessageSender implements MessageSender {
  59. protected final Context mContext;
  60. protected final int mNumberOfDests;
  61. private final String[] mDests;
  62. - protected final String mMessageText;
  63. + protected String mMessageText;
  64. protected final String mServiceCenter;
  65. protected final long mThreadId;
  66. protected int mSubId;
  67. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsSingleRecipientSender.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsSingleRecipientSender.java
  68. index 4aab62f.. 2d60f08 100644
  69. --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsSingleRecipientSender.java
  70. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsSingleRecipientSender.java
  71. @@ - 34, 6 + 34, 10 @@ import com.android.mms.MmsApp;
  72. import com.android.internal.telephony.PhoneConstants;
  73. import com.android.mms.util.PhoneUtils;
  74. import com.android.mms.util.MmsLog;
  75. + import com.mediatek.setting.GeneralPreferenceActivity;
  76. + import android.preference.PreferenceManager;
  77. + import android.content.SharedPreferences;
  78. +
  79. public class SmsSingleRecipientSender extends SmsMessageSender {
  80. @@ - 42, 6 + 46, 7 @@ public class SmsSingleRecipientSender extends SmsMessageSender {
  81. private String mDest;
  82. private Uri mUri;
  83. private static final String TAG = "SmsSingleRecipientSender";
  84. + private Context mContext;
  85. private IOpSmsSingleRecipientSenderExt mOpSmsSenderExt;
  86. @@ - 51, 6 + 56, 7 @@ public class SmsSingleRecipientSender extends SmsMessageSender {
  87. mRequestDeliveryReport = requestDeliveryReport;
  88. mDest = dest;
  89. mUri = uri;
  90. + mContext = context;
  91. mOpSmsSenderExt = OpMessageUtils.getOpMessagePlugin().getOpSmsSingleRecipientSenderExt();
  92. }
  93. @@ - 65, 6 + 71, 15 @@ public class SmsSingleRecipientSender extends SmsMessageSender {
  94. }
  95. /// M:Code analyze 002,add a variable to caculate the length of sms @{
  96. + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mContext);
  97. + StringBuffer addSignature = new StringBuffer(mMessageText);
  98. + if(sp.getBoolean(GeneralPreferenceActivity.SMS_SIGNATURE_SWITCH, true)){
  99. + addSignature.append( "\n\n"+sp.getString(GeneralPreferenceActivity.SMS_SIGNATURE_TEXT, "<这里填写短信签名>"));
  100. + android.util.Log.i( "jiangyanqing", " addSignature : "+addSignature);
  101. + }
  102. + mMessageText = addSignature+ "";
  103. int codingType = SmsMessage.ENCODING_UNKNOWN;
  104. codingType = mOpSmsSenderExt.sendMessagePrepare(mContext, codingType);
  105. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/setting/GeneralPreferenceActivity.java b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/setting/GeneralPreferenceActivity.java
  106. index 4d12a2f.. 8dd0c87 100755
  107. --- a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/setting/GeneralPreferenceActivity.java
  108. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/setting/GeneralPreferenceActivity.java
  109. @@ - 88, 6 + 88, 11 @@ import java.io.OutputStream;
  110. import java.util.ArrayList;
  111. import java.util.HashMap;
  112. import java.util.List;
  113. + import android.widget.EditText;
  114. + import android.graphics.Color;
  115. + import android.content.DialogInterface.OnClickListener;
  116. + import android.content.SharedPreferences.Editor;
  117. +
  118. /**
  119. * With this activity, users can set preferences for MMS and SMS and
  120. @@ -124,6 +129,10 @@ public class GeneralPreferenceActivity extends PreferenceActivity
  121. public static final String WAPPUSH_ENABLED = "pref_key_wappush_enable";
  122. + public static final String SMS_SIGNATURE_SWITCH = "pref_key_signature_switch";
  123. +
  124. + public static final String SMS_SIGNATURE_TEXT = "pref_key_signature_text_editor";
  125. +
  126. private static final String MAX_SMS_PER_THREAD = "MaxSmsMessagesPerThread";
  127. private static final String MAX_MMS_PER_THREAD = "MaxMmsMessagesPerThread";
  128. @@ -143,6 +152,10 @@ public class GeneralPreferenceActivity extends PreferenceActivity
  129. private Preference mChatWallpaperPref;
  130. + private Preference mSmsSignatureTextPref;
  131. +
  132. + private Preference mSmsSignatureSwitch;
  133. +
  134. private Preference mSmsLimitPref;
  135. private Preference mMmsLimitPref;
  136. @@ -294,7 +307,18 @@ public class GeneralPreferenceActivity extends PreferenceActivity
  137. .getOpGeneralPreferenceActivityExt();
  138. mOpGeneralPreferenceActivityExt.setMessagePreferences(
  139. GeneralPreferenceActivity.this, storageCategory);
  140. -
  141. + mSmsSignatureTextPref = (Preference) findPreference(SMS_SIGNATURE_TEXT);
  142. + android.util.Log.i("jiangyanqing", " signature txt :"+sp.getString(SMS_SIGNATURE_TEXT,""));
  143. + if(sp.getString(SMS_SIGNATURE_TEXT,"").equals("")){
  144. + Editor ed = PreferenceManager.getDefaultSharedPreferences(GeneralPreferenceActivity.this).edit();
  145. + ed.putString(SMS_SIGNATURE_TEXT, getString(R.string.signature_text_default));
  146. + ed.commit();
  147. + }
  148. + android.util.Log.i("jiangyanqing", " signature txt 2222:"+sp.getString(SMS_SIGNATURE_TEXT,""));
  149. + mSmsSignatureTextPref.setSummary(sp.getString(SMS_SIGNATURE_TEXT,""));
  150. + mSmsSignatureSwitch = (Preference) findPreference(SMS_SIGNATURE_SWITCH);
  151. mFontSize = (Preference) findPreference(FONT_SIZE_SETTING);
  152. mFontSizeChoices = getResourceArray(R.array.pref_message_font_size_choices);
  153. mFontSizeValues = getResourceArray(R.array.pref_message_font_size_values);
  154. @@ -409,6 +433,37 @@ public class GeneralPreferenceActivity extends PreferenceActivity
  155. showDialog(FONT_SIZE_DIALOG);
  156. } else if (preference == mChatWallpaperPref) {
  157. pickChatWallpaper();
  158. + }else if (preference == mSmsSignatureTextPref){
  159. + final EditText smsSignatureEdit = new EditText(this);
  160. + smsSignatureEdit.setHint(R.string.signature_text_hint);
  161. + smsSignatureEdit.setTextColor(Color.BLACK);
  162. + smsSignatureEdit.computeScroll();
  163. + if (mSmsSignatureTextPref.getSummary().length() > 0) {
  164. + smsSignatureEdit.setText(mSmsSignatureTextPref.getSummary());
  165. + }
  166. + new AlertDialog.Builder(this)
  167. + //.setTitle(R.string.signature_text_title)
  168. + .setTitle(getString(R.string.mms_signature_title))
  169. + .setView(smsSignatureEdit)
  170. + .setPositiveButton(R.string.OK, new OnClickListener() {
  171. + @Override
  172. + public void onClick(DialogInterface dialog, int which) {
  173. + String text = smsSignatureEdit.getText().toString();
  174. + if (text.length() <= 0) {
  175. + text = getResources().getString(R.string.signature_text_default);
  176. + }
  177. + mSmsSignatureTextPref.setSummary(text);
  178. + SharedPreferences.Editor ed = PreferenceManager.getDefaultSharedPreferences(GeneralPreferenceActivity.this).edit();
  179. + ed.putString(SMS_SIGNATURE_TEXT, text);
  180. + ed.commit();
  181. + }
  182. + })
  183. + .setNegativeButton(R.string.Cancel, null)
  184. + .show();
  185. + }else if(preference == mSmsSignatureSwitch){
  186. +
  187. }
  188. return super.onPreferenceTreeClick(preferenceScreen, preference);
  189. }
  190. @@ -425,6 +480,9 @@ public class GeneralPreferenceActivity extends PreferenceActivity
  191. editor.putBoolean(CELL_BROADCAST, false);
  192. /// M: fix bug ALPS00759844, WAPPUSH_ENABLED should be true.
  193. editor.putBoolean(WAPPUSH_ENABLED, true);
  194. + editor.putBoolean(SMS_SIGNATURE_SWITCH,true);
  195. + editor.putString(SMS_SIGNATURE_TEXT,getString(R.string.signature_text_default));
  196. +
  197. editor.putBoolean(WAPPUSH_AUTO_DOWNLOAD, false);
  198. /// M: fix bug ALPS00432361, restore default preferences
  199. /// about GroupMms and ShowEmailAddress @{


二: 第三方app状态栏作成沉浸式的(在 frameworks 下


  1. diff --git a/base/core/java/com/android/internal/policy/PhoneWindow.java b/base/core/java/com/android/internal/policy/PhoneWindow.java
  2. index 0ab5aed..f627612 100644
  3. --- a/base/core/java/com/android/internal/policy/PhoneWindow.java
  4. +++ b/base/core/java/com/android/internal/policy/PhoneWindow.java
  5. @@ - 2966, 7 + 2966, 8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
  6. WindowManager.LayoutParams attrs = getAttributes();
  7. int sysUiVisibility = attrs.systemUiVisibility | getWindowSystemUiVisibility();
  8. - if (!mIsFloating && ActivityManager.isHighEndGfx()) {
  9. + // if (!mIsFloating && ActivityManager.isHighEndGfx()) {
  10. + if (!mIsFloating && (ActivityManager.isHighEndGfx() || SystemProperties.getBoolean( "ro.config.low_ram", true))){
  11. boolean disallowAnimate = !isLaidOut();
  12. disallowAnimate |= ((mLastWindowFlags ^ attrs.flags)
  13. & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) != 0;
  14. @@ - 3879, 7 + 3880, 8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
  15. // Non-floating windows on high end devices must put up decor beneath the system bars and
  16. // therefore must know about visibility changes of those.
  17. - if (!mIsFloating && ActivityManager.isHighEndGfx()) {
  18. + // if (!mIsFloating && ActivityManager.isHighEndGfx()) {
  19. + if (!mIsFloating && (ActivityManager.isHighEndGfx() || SystemProperties.getBoolean( "ro.config.low_ram", true))){
  20. if (!targetPreL && a.getBoolean(
  21. R.styleable.Window_windowDrawsSystemBarBackgrounds,
  22. false)) {


三:相机人脸识别开关(在 vendor/mediatek/proprietary/packages/apps/Camera/res/values/strings.xml 里


  1. <resources xmlns:xliff= "urn:oasis:names:tc:xliff:document:1.2">
  2. <!-- catpure mode -->
  3. <string name= "pref_camera_face_detect_default" translatable= "false">off</string>
  4. </resources>


四: 添加时区

先 frameworks/base/packages/SettingsLib/res/xml/timezones.xml 里找一下有没有你要默认的时区,里面有的可以直接做默认时区,没有的话请下载我资源中的timezones文件并解压,

再在其中搜索你要添加的时区(搜索到的格式必须为.../...的标准时区格式),如果搜索到的话可以添加进timezones.xml,如果没有搜索到的话,证明不能添加时区,如果客户必须要这些时区的话

我们可以把+/-时区时间相同的另一个时区改名为客户要的...以下为patch(右边替换左边)

  1. diff --git a/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java b/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
  2. index 7b5bfb5.. 0520960 100644
  3. --- a/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
  4. +++ b/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
  5. @@ - 118, 7 + 118, 7 @@ public class ZoneGetter {
  6. boolean isLocalZoneId = localZoneIds.contains(olsonId);
  7. boolean preferLongName = isLocalZoneId && !localLongNamesAreAmbiguous;
  8. String displayName = getZoneDisplayName(locale, tz, now, preferLongName);
  9. -
  10. + displayName = displayName.replace( "Dhaka", "Astana").replace( "达卡", "阿斯塔纳").replace( "Дакка", "Астана").replace( "Magadan", "Severo-Kurilsk").replace( "马加丹", "塞维罗-库里尔斯克").replace( "Магадан", "Северо-Курильск").replace( "Vladivostok", "Khabarovsk").replace( "海参崴", "哈巴罗夫斯克").replace( "Владивосток", "Хабаровск");
  11. String gmtOffsetString = getGmtOffsetString(locale, tz, now);
  12. int offsetMillis = tz.getOffset(now.getTime());
  13. Map<String, Object> displayEntry =
如果要做默认时区的话还需注意的是:如果有Google开机向导,那么需要察看默认的时区在Google开机向导中是否存在该时区,如果不存在,那么该时区不能作为默认时区添加

五: 开机点击菜单按钮,桌面与主菜单重叠

在 packages/apps/Launcher3 中让用户第一次点击时停2秒就解决了

  1. diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
  2. index 9366659.. 8b3ea5a 100644
  3. --- a/src/com/android/launcher3/Launcher.java
  4. +++ b/src/com/android/launcher3/Launcher.java
  5. @@ - 255, 7 + 255, 7 @@ public class Launcher extends Activity
  6. public static final int EXIT_SPRINGLOADED_MODE_SHORT_TIMEOUT = 300;
  7. private static final int ON_ACTIVITY_RESULT_ANIMATION_DELAY = 500;
  8. private static final int ACTIVITY_START_DELAY = 1000;
  9. -
  10. + private int mSleep = 0;
  11. private HashMap<Integer, Integer> mItemIdToViewId = new HashMap<Integer, Integer>();
  12. private static final AtomicInteger sNextGeneratedId = new AtomicInteger( 1);
  13. @@ - 2887, 7 + 2887, 19 @@ public class Launcher extends Activity
  14. onClickFolderIcon (v);
  15. }
  16. } else if (v == mAllAppsButton) {
  17. - onClickAllAppsButton(v);
  18. + if(mSleep == 0){
  19. + Handler handler = new Handler();
  20. + handler.postDelayed( new Runnable() {
  21. + @Override
  22. + public void run() {
  23. + mSleep = 1;
  24. + onClickAllAppsButton(mAllAppsButton);
  25. + }
  26. + }, 2000);
  27. + }
  28. + else{
  29. + onClickAllAppsButton(v);
  30. + }
  31. } else if (tag instanceof AppInfo) {
  32. startAppShortcutOrInfoActivity(v);
  33. } else if (tag instanceof LauncherAppWidgetInfo) {

六:设置 > 位置信息  ( frameworks/base/packages/SettingsProvider/res/values/ defaults.xml

  1. <resources>
  2. <string name= "def_location_providers_allowed" translatable= "false"></string>
  3. </resources>
里面填 gps 是打开 network 是高精度,两个都要就用;连接     默认到节电就这样( packages/apps/Settings)

  1. diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java
  2. index 3b71e79.. 3324c4d 100644
  3. --- a/src/com/android/settings/location/LocationSettings.java
  4. +++ b/src/com/android/settings/location/LocationSettings.java
  5. @@ - 385, 7 + 385, 7 @@ public class LocationSettings extends LocationSettingsBase
  6. @ Override
  7. public void onSwitchChanged( Switch switchView, boolean isChecked) {
  8. if (isChecked) {
  9. - setLocationMode(android.provider.Settings.Secure.LOCATION_MODE_HIGH_ACCURACY);
  10. + setLocationMode(android.provider.Settings.Secure.LOCATION_MODE_BATTERY_SAVING);
  11. } else {
  12. setLocationMode(android.provider.Settings.Secure.LOCATION_MODE_OFF);
  13. }



七: 基带版本号和内核版本号(在packages/apps/Settings 下

  1. diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
  2. index e77726a.. 192aa59 100644
  3. --- a/src/com/android/settings/DeviceInfoSettings.java
  4. +++ b/src/com/android/settings/DeviceInfoSettings.java
  5. @@ - 140, 13 + 140, 13 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
  6. getPreferenceScreen (). removePreference (findPreference(KEY_SECURITY_PATCH));
  7. }
  8. - setValueSummary(KEY_BASEBAND_VERSION, "gsm.version.baseband");
  1. //基带版本号
  2. + findPreference(KEY_BASEBAND_VERSION).setSummary( "MOLY.WR8.W1449.MD.WG.MP.V6.P6, \n2016/06/16 19:48");
  3. setStringSummary(KEY_DEVICE_MODEL, Build.MODEL + getMsvSuffix());
  4. setValueSummary(KEY_EQUIPMENT_ID, PROPERTY_EQUIPMENT_ID);
  5. setStringSummary(KEY_DEVICE_MODEL, Build.MODEL);
  6. setStringSummary(KEY_BUILD_NUMBER, Build.DISPLAY);
  7. findPreference(KEY_BUILD_NUMBER).setEnabled( true);
  8. - findPreference(KEY_KERNEL_VERSION).setSummary(getFormattedKernelVersion());
  1. //内核版本号
  2. + findPreference(KEY_KERNEL_VERSION).setSummary( "3.10.72+ \nsonglixin@v106 #1 \nThu Jun 16 20:02:31 CST 2016");
  3. if (!SELinux.isSELinuxEnabled()) {
  4. String status = getResources().getString(R.string.selinux_status_disabled);
  5. diff --git a/src/com/mediatek/settings/deviceinfo/DeviceInfoSettingsExts.java b/src/com/mediatek/settings/deviceinfo/DeviceInfoSettingsExts.java
  6. index 0bcca55.. 234a286 100644
  7. --- a/src/com/mediatek/settings/deviceinfo/DeviceInfoSettingsExts.java
  8. +++ b/src/com/mediatek/settings/deviceinfo/DeviceInfoSettingsExts.java
  9. @@ - 139, 7 + 139, 7 @@ public class DeviceInfoSettingsExts {
  10. baseband = "gsm.version.baseband.2";
  11. }
  12. Log.d(TAG, "baseband = " + baseband);
  13. - setValueSummary(KEY_BASEBAND_VERSION, baseband);
  14. + findPreference(KEY_BASEBAND_VERSION).setSummary( "MOLY.WR8.W1449.MD.WG.MP.V6.P6, \n2016/06/16 19:48");
  15. if (hasExternalModem && !FeatureOption.PURE_AP_USE_EXTERNAL_MODEM) {
  16. String baseband2 = "gsm.version.baseband.2";

八:合入FOTA

除了加入客户提供的fota apk 外,还要在关于手机里面加入无线升级(fota 入口) (在packages/apps/Settings  中

  1. diff --git a/res/xml/device_info_settings.xml b/res/xml/device_info_settings.xml
  2. index b9ac889.. 67c155d 100644
  3. --- a/res/xml/device_info_settings.xml
  4. +++ b/res/xml/device_info_settings.xml
  5. @@ - 37, 8 + 37, 8 @@
  6. <!-- fota start -->
  7. <PreferenceScreen android:key= "adupsfota_software_update"
  8. android:title= "Wireless update">
  9. - <intent android:targetPackage= "com.adups.fota"
  10. - android:targetClass= "com.adups.fota.GoogleOtaClient"/>
  1. //apk包名
  2. + <intent android:targetPackage= "ru.drivepixels.fota"
  1. //apk类名
  2. + android:targetClass= "ru.drivepixels.fota.Fota"/>
  3. </PreferenceScreen>
  4. <!-- fota end -->
  5. <!-- End of Vanzo:tanglei -->
  6. diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
  7. index fbb818b.. 5375b93 100644
  8. --- a/src/com/android/settings/DeviceInfoSettings.java
  9. +++ b/src/com/android/settings/DeviceInfoSettings.java
  10. @@ - 240, 14 + 240, 14 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
  11. /* Vanzo:tanglei on: Sun, 03 Jan 2016 15:57:06 +0800
  12. */
  13. //fota start
  14. - if(!isApkExist(act, "com.adups.fota")){
  15. + if(!isApkExist(act, "ru.drivepixels.fota")){
  16. if(findPreference( "adupsfota_software_update") != null){
  17. getPreferenceScreen().removePreference(findPreference( "adupsfota_software_update"));
  18. }
  19. } else {
  20. Preference preference = findPreference( "adupsfota_software_update");
  21. if (preference != null) {
  22. - preference.setTitle(getAppName(act, "com.adups.fota"));
  23. + preference.setTitle(getAppName(act, "ru.drivepixels.fota"));
  24. }
  25. }
  26. //fota end

九: 暗码

1)工程代码/查看软件版本 (packages/apps/Dialer/res/values/strings_custom.xml)

<resources>
  1. //工程
  2. <string name= "engineer_mode_code">#*# 77250411##*</string>
  1. // 软件版本
  2. <string name= "build_version_code">*#*# 77111269#*#*</string>
  3. </resources>
2)工厂模式( packages/apps/Dialer/res/values/ strings_engineer.xml)
  1. <resources xmlns:xliff= "urn:oasis:names:tc:xliff:document:1.2">
  2. <string name= "engineer_code_factorymode">*# 66*#</string>
  3. </resources>
3) 查PCB版本和查看硬件指令和软件版本和软硬件版本指令(packages/apps/Dialer)
  1. diff --git a/src/com/android/dialer/SpecialCharSequenceMgr.java b/src/com/android/dialer/SpecialCharSequenceMgr.java
  2. index f0d069e..b03efeb 100755
  3. --- a/src/com/android/dialer/SpecialCharSequenceMgr.java
  4. +++ b/src/com/android/dialer/SpecialCharSequenceMgr.java
  5. @@ - 176, 6 + 176, 9 @@ public class SpecialCharSequenceMgr {
  6. if(input.equals(context.getResources().getString(R.string.engineer_mode_code))) {
  7. input= "*#*#3646633#*#*";
  8. }
  1. //硬件指令(外面的是客户提供的里面的是内部的)
  2. + if (input.equals( "*#6666*#")) {
  3. + input = "*#*#9646633#*#*";
  4. + }
  5. // End of Vanzo:yujianpeng
  6. //get rid of the separators so that the string gets parsed correctly
  7. String dialString = PhoneNumberUtils.stripSeparators(input);
  8. @@ - 197, 6 + 200, 7 @@ public class SpecialCharSequenceMgr {
  9. || handlePinEntry(context, dialString)
  10. || handleAdnEntry(context, dialString, textField)
  11. || handleSecretCode(context, dialString)
  12. + || handlePCBVersion(context, dialString)
+   		 || handleExternalBuildNumber(context,dialString)
  1. +                || handleInternalBuildNumber(context,dialString)
  2. /// M: for OP09 6M project @{
  3. || handleVersionCode(context, dialString)
  4. /// @}
  5. @@ - 221, 6 + 225, 18 @@ public class SpecialCharSequenceMgr {
  6. return false;
  7. }
  8. + //PCB版本
  9. + static boolean handlePCBVersion(Context context, String input) {
  10. + if (input.equals( "*#7777*#")) {
  11. + AlertDialog alert = new AlertDialog.Builder(context)
  12. + .setTitle( "PCB")
  1. + .setMessage( "W371_MB_MP1.0_MT6580")
  2. + .setPositiveButton(android.R.string.ok, null).setCancelable( false).create();
  3. + alert.show();
  4. + return true;
  5. + }
  6. + return false;
  7. + }
  1. + // 软硬件版本指令
  2. + static boolean handleExternalBuildNumber(Context context,String input) {
  3. +         if(input.equals( "#*8378#1#")) {
  4. +            String displayId = SystemProperties.get( "ro.build.display.id");
  5. +            String hardwareId = SystemProperties.get( "ro.build.display.hardware.id", "UNKOWN");
  6. +            AlertDialog alert = new AlertDialog.Builder(context)
  7. +                .setTitle(context.getResources().getString(R.string.sw_version_title))
  8. +                .setMessage( "Version de Software\n" + displayId + "\n" + "Version de Hardware\n" +hardwareId)
  9. +                .setPositiveButton(android.R.string.ok, null)
  10. +                .setCancelable( false)
  11. +                .show();
  12. +             return true;
  13. +        }
  14. +         return false;
  15. +    }
  16. + //内部版本指令
  17. +     static boolean handleInternalBuildNumber(Context context,String input) {
  18. +         if(input.equals( "*1111#")) {
  19. +            String innerId = SystemProperties.get( "ro.build.display.inner.id", "UNKOWN");
+	     //这个要在下面的buildinfo.sh中定义
  1. +            String buildtime = SystemProperties.get( "ro.build.date.ymd", "UNKOWN");
  2. +            AlertDialog alert = new AlertDialog.Builder(context)
  3. +                .setTitle(context.getResources().getString(R.string.sw_version_title))
  4. +                .setMessage( "Version de Software\n" + innerId + "_" + buildtime)
  5. +                .setPositiveButton(android.R.string.ok, null)
  6. +                .setCancelable( false)
  7. +                .show();
  8. +             return true;
  9. +        }
  10. +         return false;
  11. +    }

(build/tools/buildinfo.sh)

  1. +diff --git a/tools/buildinfo.sh b/tools/buildinfo.sh
  2. +index 3254ce4.. 25d24b2 100755
  3. +--- a/tools/buildinfo.sh
  4. ++++ b/tools/buildinfo.sh
  5. +@@ - 28, 6 + 28, 7 @@ fi
  6. + echo "ro.build.version.security_patch=$PLATFORM_SECURITY_PATCH"
  7. + echo "ro.build.version.base_os=$PLATFORM_BASE_OS"
  8. + echo "ro.build.date=`date`"
  9. ++echo "ro.build.date.ymd=`date +%Y%m%d`"
  10. + echo "ro.build.date.utc=`date +%s`"
  11. + echo "ro.build.type=$TARGET_BUILD_TYPE"
  12. + echo "ro.build.user=$USER"
(packages/apps/Settings/)硬件版本号
  1. +diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
  2. +index 8c647c8..a752eac 100644
  3. +--- a/res/values-es-rUS/strings.xml
  4. ++++ b/res/values-es-rUS/strings.xml
  5. +@@ - 900, 7 + 900, 8 @@
  6. + <string name= "fcc_equipment_id" msgid= "149114368246356737"> "ID del equipo"</string>
  7. + <string name= "baseband_version" msgid= "1848990160763524801"> "Versión de banda base"</string>
  8. + <string name= "kernel_version" msgid= "9192574954196167602"> "Versión de núcleo"</string>
  9. +- <string name= "build_number" msgid= "3075795840572241758"> "Número de compilación"</string>
  10. ++ <string name= "build_number" msgid= "3075795840572241758"> "Versión de Software"</string>
  11. ++ <string name= "hardware_version" msgid= "3075795840572241758"> "Versión de Hardware"</string>
  12. + <string name= "selinux_status" msgid= "6212165375172061672"> "Estado de SELinux"</string>
  13. + <string name= "device_info_not_available" msgid= "8062521887156825182"> "No disponible"</string>
  14. + <string name= "device_status_activity_title" msgid= "1411201799384697904"> "Estado"</string>
  15. +diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
  16. +index 94e27ea.. 6a19598 100644
  17. +--- a/res/values-zh-rCN/strings.xml
  18. ++++ b/res/values-zh-rCN/strings.xml
  19. +@@ - 900, 7 + 900, 8 @@
  20. + <string name= "fcc_equipment_id" msgid= "149114368246356737"> "设备 ID"</string>
  21. + <string name= "baseband_version" msgid= "1848990160763524801"> "基带版本"</string>
  22. + <string name= "kernel_version" msgid= "9192574954196167602"> "内核版本"</string>
  23. +- <string name= "build_number" msgid= "3075795840572241758"> "版本号"</string>
  24. ++ <string name= "build_number" msgid= "3075795840572241758"> "软件版本号"</string>
  25. ++ <string name= "hardware_version" msgid= "3075795840572241758"> "硬件版本号"</string>
  26. + <string name= "selinux_status" msgid= "6212165375172061672"> "SELinux 状态"</string>
  27. + <string name= "device_info_not_available" msgid= "8062521887156825182"> "不可用"</string>
  28. + <string name= "device_status_activity_title" msgid= "1411201799384697904"> "状态信息"</string>
  29. +diff --git a/res/values/strings.xml b/res/values/strings.xml
  30. +index ad5ca8c.. 33ac7b3 100644
  31. +--- a/res/values/strings.xml
  32. ++++ b/res/values/strings.xml
  33. +@@ - 2148, 7 + 2148, 8 @@
  34. + <!-- About phone screen, setting option name [CHAR LIMIT= 40] -->
  35. + <string name= "kernel_version">Kernel version</string>
  36. + <!-- About phone screen, setting option name [CHAR LIMIT= 40] -->
  37. +- <string name= "build_number">Build number</string>
  38. ++ <string name= "build_number">Build number </string>
  39. ++ <string name= "hardware_version">Hardware version</string>
  40. + <!-- About phone screen, setting option name [CHAR LIMIT= 40] -->
  41. + <string name= "selinux_status">SELinux status</string>
  42. +
  43. +diff --git a/res/xml/device_info_settings.xml b/res/xml/device_info_settings.xml
  44. +index b9ac889..de65506 100644
  45. +--- a/res/xml/device_info_settings.xml
  46. ++++ b/res/xml/device_info_settings.xml
  47. +@@ - 153, 6 + 153, 12 @@ add brand name
  48. + android:title= "@string/build_number"
  49. + android:summary= "@string/device_info_default"/>
  50. +
  51. ++ <!-- Detailed hardware version -->
  52. ++ <Preference android:key= "hardware_version"
  53. ++ style= "?android:preferenceInformationStyle"
  54. ++ android:title= "@string/hardware_version"
  55. ++ android:summary= "@string/device_info_default"/>
  56. ++
  57. + <!-- SELinux status information -->
  58. + <Preference android:key= "selinux_status"
  59. + style= "?android:preferenceInformationStyle"
  60. +diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
  61. +index fbb818b.. 7ff26f5 100644
  62. +--- a/src/com/android/settings/DeviceInfoSettings.java
  63. ++++ b/src/com/android/settings/DeviceInfoSettings.java
  64. +@@ - 80, 6 + 80, 7 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
  65. + private static final String PROPERTY_SELINUX_STATUS = "ro.build.selinux";
  66. + private static final String KEY_KERNEL_VERSION = "kernel_version";
  67. + private static final String KEY_BUILD_NUMBER = "build_number";
  68. ++ private static final String KEY_HARDWARE_VERSION = "hardware_version";
  69. + private static final String KEY_DEVICE_MODEL = "device_model";
  70. + /* Vanzo:tanglei on: Fri, 24 Apr 2015 15:18:32 +0800
  71. + * add brand name
  72. +@@ -148,6 +149,7 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
  73. + setValueSummary(KEY_EQUIPMENT_ID, PROPERTY_EQUIPMENT_ID);
  74. + setStringSummary(KEY_DEVICE_MODEL, Build.MODEL);
  75. + setStringSummary(KEY_BUILD_NUMBER, Build.DISPLAY);
  76. ++ setValueSummary(KEY_HARDWARE_VERSION, "ro.build.display.hardware.id");
  77. + findPreference(KEY_BUILD_NUMBER).setEnabled(true);
  78. + findPreference(KEY_KERNEL_VERSION).setSummary(getFormattedKernelVersion());


十:android键盘 打开俄罗斯语言和英文
packages/inputmethods

  1. diff --git a/LatinIME/java/Android.mk b/LatinIME/java/Android.mk
  2. index 7a4df92..b94dae0 100644
  3. --- a/LatinIME/java/Android.mk
  4. +++ b/LatinIME/java/Android.mk
  5. @@ - 35, 6 + 35, 8 @@ LOCAL_STATIC_JAVA_LIBRARIES := \
  6. +LOCAL_JAVA_LIBRARIES := mediatek-common
  7. +LOCAL_PRIVILEGED_MODULE := true
  8. # Do not compress dictionary files to mmap dict data runtime
  9. LOCAL_AAPT_FLAGS := - 0 .dict
  10. diff --git a/LatinIME/java/AndroidManifest.xml b/LatinIME/java/AndroidManifest.xml
  11. index a1f469e.. 22b4ff0 100644
  12. --- a/LatinIME/java/AndroidManifest.xml
  13. +++ b/LatinIME/java/AndroidManifest.xml
  14. @@ - 34, 6 + 34, 10 @@
  15. <uses-permission android:name= "android.permission.WRITE_EXTERNAL_STORAGE" />
  16. <uses-permission android:name= "android.permission.WRITE_SYNC_SETTINGS" />
  17. <uses-permission android:name= "android.permission.WRITE_USER_DICTIONARY" />
  18. + <uses-permission android:name= "android.permission.WRITE_SETTINGS" />
  19. + <uses-permission android:name= "android.permission.WRITE_SECURE_SETTINGS" />
  20. + <uses-permission android:name= "android.permission.WRITE_SETTINGS" />
  21. + <uses-permission android:name= "android.permission.WRITE_SECURE_SETTINGS" />
  22. <application android:label= "@string/english_ime_name"
  23. android:icon= "@drawable/ic_launcher_keyboard"
  24. @@ - 170, 5 + 174, 10 @@
  25. android:multiprocess= "false"
  26. android:label= "@string/dictionary_provider_name">
  27. </provider>
  28. + <receiver android:name= "LatinImeReceiver" android:enabled= "true">
  29. + <intent-filter>
  30. + <action android:name= "android.intent.action.BOOT_COMPLETED" />
  31. + </intent-filter>
  32. + </receiver>
  33. </application>
  34. </manifest>
  35. diff --git a/LatinIME/java/res/xml/method.xml b/LatinIME/java/res/xml/method.xml
  36. index 19742d4.. 0e3fea2 100644
  37. --- a/LatinIME/java/res/xml/method.xml
  38. +++ b/LatinIME/java/res/xml/method.xml
  39. @@ - 810, 14 + 810, 6 @@
  40. android:imeSubtypeMode= "keyboard"
  41. android:imeSubtypeExtraValue= "KeyboardLayoutSet=bengali,SupportTouchPositionCorrection,EmojiCapable"
  42. />
  43. - <!-- Burmese -->
  44. - <subtype android:icon= "@drawable/ic_ime_switcher_dark"
  45. - android:label= "@string/subtype_generic"
  46. - android:subtypeId= "0x00000003"
  47. - android:imeSubtypeLocale= "my_MM"
  48. - android:imeSubtypeMode= "keyboard"
  49. - android:imeSubtypeExtraValue= "KeyboardLayoutSet=burmese,SupportTouchPositionCorrection,EmojiCapable"
  50. - />
  51. <!-- Urdu -->
  52. <subtype android:icon= "@drawable/ic_ime_switcher_dark"
  53. android:label= "@string/subtype_generic"
  54. diff --git a/LatinIME/java/src/com/android/inputmethod/latin/LatinImeReceiver.java b/LatinIME/java/src/com/android/inputmethod/latin/LatinImeReceiver.java
  55. new file mode 100644
  56. index 0000000..c685ed7
  57. --- /dev/ null
  58. +++ b/LatinIME/java/src/com/android/inputmethod/latin/LatinImeReceiver.java
  59. @@ - 0, 0 + 1, 130 @@
  60. + package com.android.inputmethod.latin;
  61. + import android.content.BroadcastReceiver;
  62. + import android.content.Context;
  63. + import android.content.Intent;
  64. + import android.content.SharedPreferences;
  65. + import android.provider.Settings;
  66. + import android.util.Log;
  67. + import android.view.inputmethod.InputMethodInfo;
  68. + import android.view.inputmethod.InputMethodManager;
  69. + import android.view.inputmethod.InputMethodSubtype;
  70. + import android.text.TextUtils;
  71. + import java.util.Locale;
  72. +
  73. + public class LatinImeReceiver extends BroadcastReceiver {
  74. + private static final String TAG = LatinImeReceiver.class.getSimpleName();
  75. + @Override
  76. + public void onReceive(Context context, Intent intent) {
  77. + // Set the default input language at the system boot completed.
  78. + if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
  79. + SharedPreferences sp = context.getSharedPreferences( "default_input_language_config",
  80. + Context.MODE_PRIVATE);
  81. + boolean hasSet = sp.getBoolean( "has_set", false);
  82. +
  83. + if (!hasSet) {
  84. + setDefaultSubtypes(context);
  85. + sp.edit().putBoolean( "has_set", true).commit();
  86. + }
  87. + }
  88. + }
  89. +
  90. + /**
  91. + * M: Set the default IME subtype.
  92. + */
  93. + private void setDefaultSubtypes(Context context) {
  94. + final String serviceName = "com.android.inputmethod.latin/.LatinIME";
  95. + final String currentPackageName = "com.android.inputmethod.latin";
  96. + final String enable = Settings.Secure.getString(context.getContentResolver(),
  97. + Settings.Secure.ENABLED_INPUT_METHODS);
  98. + final InputMethodManager imm = (InputMethodManager) context.getSystemService(
  99. + Context.INPUT_METHOD_SERVICE);
  100. + final StringBuilder builder = new StringBuilder();
  101. +
  102. + // Get sub type hash code
  103. + for (InputMethodInfo info : imm.getInputMethodList()) {
  104. + if (currentPackageName.equals(info.getPackageName())) {
  105. + for ( int i = 0; i < info.getSubtypeCount(); i++) {
  106. + final InputMethodSubtype subtype = info.getSubtypeAt(i);
  107. + final String locale = subtype.getLocale().toString();
  108. + if (isDefaultLocale(locale)) {
  109. + Log.i(TAG, "default enabled subtype locale = " + locale);
  110. + builder.append( ';');
  111. + builder.append(subtype.hashCode());
  112. + }
  113. + }
  114. +
  115. + break;
  116. + }
  117. + }
  118. +
  119. + // Insert the sub type
  120. + if (builder.length() > 0 && !TextUtils.isEmpty(enable)) {
  121. + final String subtype = builder.toString();
  122. + builder.setLength( 0);
  123. +
  124. + final int index = enable.indexOf(serviceName) + serviceName.length();
  125. + if (enable.length() > index) {
  126. + builder.append(enable.substring( 0, index));
  127. + builder.append(subtype);
  128. + builder.append(enable.substring(index));
  129. + } else if (enable.length() == index) {
  130. + builder.append(enable);
  131. + builder.append(subtype);
  132. + } else {
  133. + return;
  134. + }
  135. + } else {
  136. + Log.w(TAG, "Build Latin IME subtype failed: " + " builder length = " + builder.length()
  137. + + "; enable isEmpty :" + TextUtils.isEmpty(enable));
  138. + return;
  139. + }
  140. +
  141. + // Commit the result
  142. + android.provider.Settings.Secure.putString(context.getContentResolver(),
  143. + android.provider.Settings.Secure.ENABLED_INPUT_METHODS, builder.toString());
  144. +
  145. +
  146. + String lastInputMethodId = Settings.Secure.getString(context
  147. + .getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD);
  148. + Log.w(TAG, "DEFAULT_INPUT_METHOD = " + lastInputMethodId);
  149. + if(lastInputMethodId.equals(serviceName)) {
  150. + Log.w(TAG, "DEFAULT_INPUT_METHOD = com.android.inputmethod.latin/.LatinIME" );
  151. + for (InputMethodInfo info : imm.getInputMethodList()) {
  152. + if (currentPackageName.equals(info.getPackageName())) {
  153. + for ( int i = 0; i < info.getSubtypeCount(); i++) {
  154. + final InputMethodSubtype subtype = info.getSubtypeAt(i);
  155. + String country = Locale.getDefault().toString();
  156. +
  157. + if(country.contains(subtype.getLocale())) {
  158. + Log.w(TAG, "putString " + subtype.hashCode());
  159. + android.provider.Settings.Secure.putInt(context.getContentResolver(),
  160. + android.provider.Settings.Secure.SELECTED_INPUT_METHOD_SUBTYPE, subtype.hashCode());
  161. +
  162. + }
  163. + }
  164. +
  165. + break;
  166. + }
  167. + }
  168. +
  169. + }
  170. + }
  171. +
  172. + /**
  173. + * M: Check if the current locale is default or not.
  174. + */
  175. + private boolean isDefaultLocale (String locale) {
  1. //这里控制打开的
  2. + final String[] locales = { "ru", "en_US"};
  3. + for (String s : locales) {
  4. + if (s.equals(locale)) {
  5. + return true;
  6. + }
  7. + }
  8. +
  9. + return false;
  10. + }
  11. +}

十一: 在电话本里,电话匹配长度是7 位数字(从右向左,7位数字)
(frameworks/base/telephony/java/android/telephony/PhoneNumberUtils.java)

	public static final int VANZO_FEATURE_DEFAULT_PHONENUMBER_MIN_MATCH = 7;
 
 
   

 
   
  1. if (sIsCtaSupport) {
  2. minMatchLen = MIN_MATCH_CTA;
  3. } else if (sPhoneNumberExt != null) {
  4. - minMatchLen = sPhoneNumberExt.getMinMatch();
  5. + minMatchLen = MIN_MATCH;
  6. }
  7. Rlog.d(LOG_TAG, "[compareLoosely] a: " + a + ", b: " + b + ", minMatchLen:" + minMatchLen);
  8. @@ - 905, 7 + 914, 12 @@ public class PhoneNumberUtils
  9. if (sIsCtaSupport) {
  10. minMatchLen = MIN_MATCH_CTA;
  11. } else if (sPhoneNumberExt != null) {
  12. - minMatchLen = sPhoneNumberExt.getMinMatch();
  13. + minMatchLen = MIN_MATCH;
  14. }
  15. String strStrippedReversed = internalGetStrippedReversed(np, minMatchLen);
  16. @@ - 1715, 7 + 1729, 12 @@ public class PhoneNumberUtils
  17. //
  18. // However, in order to loose match 650-555-1212 and 555-1212, we need to set the min match
  19. // to 7.
  20. - static final int MIN_MATCH = 7;
  21. + static final int MIN_MATCH = VANZO_FEATURE_DEFAULT_PHONENUMBER_MIN_MATCH;
  22. /// M: [mtk04070][111116][ALPS00093395]Add a constant integer. @{
  23. static final int MIN_MATCH_CTA = 11;
  24. /// @}

在不过gms的情况下,还要额外加上一段修改(packages/providers)

  1. diff --git a/ContactsProvider/src/com/android/providers/contacts/ContactsDatabaseHelper.java b/ContactsProvider/src/com/android/providers/contacts/ContactsDatabaseHelper.java
  2. index e1d3b77..b3300a4 100644
  3. --- a/ContactsProvider/src/com/android/providers/contacts/ContactsDatabaseHelper.java
  4. +++ b/ContactsProvider/src/com/android/providers/contacts/ContactsDatabaseHelper.java
  5. @@ - 5731, 33 + 5731, 12 @@ public class ContactsDatabaseHelper extends SQLiteOpenHelper {
  6. */
  7. public void buildFallbackPhoneLookupAndContactQuery(SQLiteQueryBuilder qb, String number) {
  8. final String minMatch = PhoneNumberUtils.toCallerIDMinMatch(number);
  9. - final StringBuilder sb = new StringBuilder();
  10. - // Append lookup tables.
  11. - sb.append(Tables.RAW_CONTACTS);
  12. - sb.append( " JOIN " + Views.CONTACTS + " as contacts_view"
  13. - + " ON (contacts_view._id = " + Tables.RAW_CONTACTS
  14. - + "." + RawContacts.CONTACT_ID + ")" +
  15. - " JOIN (SELECT " + PhoneLookupColumns.DATA_ID + "," +
  16. - PhoneLookupColumns.NORMALIZED_NUMBER + " FROM "+ Tables.PHONE_LOOKUP + " "
  17. - + "WHERE (" + Tables.PHONE_LOOKUP + "." + PhoneLookupColumns.MIN_MATCH + " = '");
  18. - sb.append(minMatch);
  19. - sb.append( "')) AS lookup " +
  20. - "ON lookup." + PhoneLookupColumns.DATA_ID + "=" + Tables.DATA + "." + Data._ID
  21. - + " JOIN " + Tables.DATA + " "
  22. - + "ON " + Tables.DATA + "." + Data.RAW_CONTACT_ID + "=" + Tables.RAW_CONTACTS + "."
  23. - + RawContacts._ID);
  24. -
  25. - /**
  26. - * M: append this table for some query(fix ALPS00532279) @{
  27. - */
  28. + StringBuilder sb = new StringBuilder();
  29. + appendPhoneLookupTables(sb, minMatch, true);
  30. appendPresenceAndStautsTable(sb);
  31. - /** @} */
  32. qb.setTables(sb.toString());
  33. -
  34. - sb.setLength( 0);
  35. - sb.append( "PHONE_NUMBERS_EQUAL(" + Tables.DATA + "." + Phone.NUMBER + ", ");
  36. - DatabaseUtils.appendEscapedSQLString(sb, number);
  37. - sb.append(mUseStrictPhoneNumberComparison ? ", 1)" : ", 0)");
  38. + sb = new StringBuilder();
  39. + appendPhoneLookupSelection(sb, null, null);
  40. qb.appendWhere(sb.toString());
  41. }
  42. /** @} */

十二:去除工厂模式中的 光感/距感测试项 vanzo

  1. diff --git a/packages/FactoryMode/src/com/mediatek/factorymode/FactoryMode.java b/packages/FactoryMode/src/com/mediatek/factorymode/FactoryMode.java
  2. index 6100b0e.. 449b5fa 100755
  3. --- a/packages/FactoryMode/src/com/mediatek/factorymode/FactoryMode.java
  4. +++ b/packages/FactoryMode/src/com/mediatek/factorymode/FactoryMode.java
  5. @@ - 56, 7 + 56, 7 @@ public class FactoryMode extends Activity implements OnItemClickListener {
  6. private TextView mMotherBoardResult;
  7. - public static boolean mHavePsensor = true;
  8. + public static boolean mHavePsensor = false;
  9. public static boolean mHaveMsensor = true;

十三: 相机零延迟开关/ 避免闪烁没有默认60HZ

零延迟:vendor/mediatek/proprietary/packages/apps/Camera/res/values/strings.xml
  1. <resources xmlns:xliff= "urn:oasis:names:tc:xliff:document:1.2">
  2. <string name= "pref_camera_zsd_default" translatable= "false">on</string>
  3. </resources>
避免闪烁没有默认60HZ:(vendor)
  1. diff --git a/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml b/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml
  2. index 607f6a0..a01f714 100755
  3. --- a/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml
  4. +++ b/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml
  5. @@ -684,6 +684,7 @@ add 16M 16_9
  6. </string-array>
  7. <!-- Default antibanding setting.-->
  8. <string-array name="pref_camera_antibanding_default_array" translatable="false">
  9. + <item>60hz</item>
  10. <item>auto</item>
  11. <item>off</item>
  12. <item>50hz</item>

十四:WIFI默认关闭 packages/apps/Launcher3
 
   

 
   
  1. diff --git a/AndroidManifest.xml b/AndroidManifest.xml
  2. index df22272.. 8929289 100755
  3. --- a/AndroidManifest.xml
  4. +++ b/AndroidManifest.xml
  5. @@ - 70, 6 + 70, 8 @@
  6. <uses-permission android:name= "com.android.launcher3.permission.RECEIVE_FIRST_LOAD_BROADCAST" />
  7. <!-- M: hide apps activity requires this permission to get package size. -->
  8. <uses-permission android:name= "android.permission.GET_PACKAGE_SIZE"/>
  9. + <uses-permission android:name= "android.permission.CHANGE_WIFI_STATE" />
  10. + <uses-permission android:name= "android.permission.ACCESS_NETWORK_STATE" />
  11. <!-- M: ALSP02141215, android security patch. -->
  12. <uses-permission android:name= "android.permission.GET_TASKS" />
  13. <!-- M: ALSP02241595, add MANAGE_USERS permission. -->
  14. diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
  15. index 9366659.. 7c30d9d 100644
  16. --- a/src/com/android/launcher3/Launcher.java
  17. +++ b/src/com/android/launcher3/Launcher.java
  18. @@ - 146, 6 + 146, 9 @@ import android.hardware.SensorEvent;
  19. import android.hardware.SensorEventListener;
  20. import android.hardware.SensorManager;
  21. import com.android.featureoption.FeatureOption;
  22. + import android.net.NetworkInfo;
  23. + import android.net.wifi.WifiManager;
  24. + import android.net.ConnectivityManager;
  25. // End of Vanzo:hanshengpeng
  26. /**
  27. @@ -5163,6 +5166,18 @@ public class Launcher extends Activity
  28. editor.apply();
  29. }
  30. + private void closeWifiGps() {
  31. + // Intent sh = new Intent("com.android.settings.location.CLOSE");
  32. + //sendBroadcast(sh);
  33. + final WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
  34. + ConnectivityManager con = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
  35. + NetworkInfo netWork = con.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  36. + if (wifiManager == null || netWork.isConnected()) {
  37. + return;
  38. + }
  39. + wifiManager.setWifiEnabled(false);
  40. + }
  41. +
  42. @Thunk void showFirstRunClings() {
  43. // The two first run cling paths are mutually exclusive, if the launcher is preinstalled
  44. // on the device, then we always show the first run cling experience (or if there is no
  45. @@ -5175,6 +5190,7 @@ public class Launcher extends Activity
  46. } else {
  47. launcherClings.showLongPressCling(true);
  48. }
  49. + closeWifiGps();
  50. }
  51. }


十五:壁纸不滑动packages/apps/Launcher3

  1. diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
  2. index e299302.. 5ac7b2b 100755
  3. --- a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
  4. +++ b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
  5. @@ - 1059, 11 + 1059, 15 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
  6. if (partner == null || !partner.hideDefaultWallpaper()) {
  7. // Add an entry for the default wallpaper (stored in system resources)
  8. + /* Vanzo:yujianpeng on: Fri, 01 Apr 2016 15:39:35 +0800
  9. + * TODO: replace this line with your comment
  10. WallpaperTileInfo defaultWallpaperInfo = Utilities.ATLEAST_KITKAT
  11. ? getDefaultWallpaper() : getPreKKDefaultWallpaperInfo();
  12. if (defaultWallpaperInfo != null) {
  13. bundled.add(0, defaultWallpaperInfo);
  14. }
  15. + */
  16. + // End of Vanzo:yujianpeng
  17. }
  18. return bundled;
  19. }

十六:插入SD卡时默认为SD卡packages/apps/Settings

  1. diff --git a/AndroidManifest.xml b/AndroidManifest.xml
  2. index c8b252a..bed2c41 100644
  3. --- a/AndroidManifest.xml
  4. +++ b/AndroidManifest.xml
  5. @@ - 3173, 6 + 3173, 12 @@ add fp control
  6. </intent-filter>
  7. </receiver>
  8. <!-- End of Vanzo:fenghaitao -->
  9. -
  10. + <receiver android:name= ".UsbBroadCastReceiver">
  11. + <intent-filter android:priority= "1000">
  12. + <action android:name= "android.intent.action.MEDIA_MOUNTED"/>
  13. + <action android:name= "android.intent.action.MEDIA_EJECT" />
  14. + <data android:scheme= "file"/>
  15. + </intent-filter>
  16. + </receiver>
  17. </application>
  18. </manifest>
  19. diff --git a/src/com/android/settings/UsbBroadCastReceiver.java b/src/com/android/settings/UsbBroadCastReceiver.java
  20. new file mode 100644
  21. index 0000000..b578167
  22. --- /dev/ null
  23. +++ b/src/com/android/settings/UsbBroadCastReceiver.java
  24. @@ - 0, 0 + 1, 26 @@
  25. + package com.android.settings;
  26. +
  27. + import android.content.BroadcastReceiver;
  28. + import android.content.Context;
  29. + import android.content.Intent;
  30. + import android.provider.Settings;
  31. + import android.util.Log;
  32. + import android.os.storage.IMountService;
  33. + import com.mediatek.storage.StorageManagerEx;
  34. +
  35. + public class UsbBroadCastReceiver extends BroadcastReceiver {
  36. + String TAG = "UsbBroadCastReceiver";
  37. + String ExternalStoragePath = StorageManagerEx.getExternalStoragePath();
  38. +
  39. +
  40. + public void onReceive(Context context, Intent intent) {
  41. +
  42. + Log.i(TAG, "receive change request");
  43. + if (Intent.ACTION_MEDIA_MOUNTED.equals(intent.getAction())) {
  44. + Log.d( "yjp", "intent : ACTION_MEDIA_MOUNTED");
  45. + Log.d( "yjp", "ExternalStoragePath " + ExternalStoragePath + " getInternalStoragePath : " + StorageManagerEx.getInternalStoragePath());
  46. + StorageManagerEx.setDefaultPath(ExternalStoragePath);
  47. + }
  48. + }
  49. +
  50. +}

十七: 邮箱默认签名,默认西班牙语下:Enviado des... 英语和其他语言下:Sent from my LO...(packages/apps/Email)

  1. diff --git a/UnifiedEmail/src/com/android/mail/compose/ComposeActivity.java b/UnifiedEmail/src/com/android/mail/compose/ComposeActivity.java
  2. index d6acdaf..e8bdab6 100755
  3. --- a/UnifiedEmail/src/com/android/mail/compose/ComposeActivity.java
  4. +++ b/UnifiedEmail/src/com/android/mail/compose/ComposeActivity.java
  5. @@ - 78, 6 + 78, 8 @@ import android.widget.ScrollView;
  6. import android.widget.MultiAutoCompleteTextView;
  7. import android.widget.TextView;
  8. import android.widget.Toast;
  9. + import android.preference.EditTextPreference;
  10. + import java.util.Locale;
  11. import com.android.common.Rfc822Validator;
  12. import com.android.common.contacts.DataUsageStatUpdater;
  13. @@ - 1116, 6 + 1118, 15 @@ public class ComposeActivity extends ActionBarActivity
  14. DataCollectUtils. clearRecordedList();
  15. }
  16. /** @} */
  17. + if(mSignature.equals( "Enviado desde mi smartphone LOGIC")){
  18. + if(mBodyView.getText().toString().contains( "Enviado desde mi smartphone LOGIC")){
  19. + if(Locale.getDefault().getLanguage().equals( "es")) {
  20. + mBodyView.setText(mBodyView.getText().toString());
  21. + } else {
  22. + mBodyView.setText(mBodyView.getText().toString());
  23. + }
  24. + }
  25. + }
  26. }
  27. @Override
  28. @@ - 1890, 6 + 1901, 17 @@ public class ComposeActivity extends ActionBarActivity
  29. message. bodyHtml. length());
  30. }
  31. }
  32. + if(mSignature.equals( "Enviado desde mi smartphone LOGIC") || mSignature.equals( "Sent from my LOGIC smartphone.")){
  33. + if(body.equals( "Enviado desde mi smartphone LOGIC") || body.equals( "Sent from my LOGIC smartphone.") ){
  34. + if(Locale.getDefault().getLanguage().equals( "es")){
  35. + mBodyView.setText( "Enviado desde mi smartphone LOGIC");
  36. + } else {
  37. + mBodyView.setText( "Sent from my LOGIC smartphone.");
  38. + }
  39. + }
  40. + } else{
  41. + mBodyView.setText(body);
  42. + }
  43. new HtmlToSpannedTask().execute(body);
  44. } else {
  45. final String body = message.bodyText;
  46. @@ - 4229, 6 + 4251, 15 @@ public class ComposeActivity extends ActionBarActivity
  47. mSignature = newSignature;
  48. if (!TextUtils.isEmpty(mSignature)) {
  49. // Appending a signature does not count as changing text.
  50. + if(mSignature.equals( "Enviado desde mi smartphone LOGIC") || mSignature.equals( "Sent from my LOGIC smartphone.")){
  51. + if(Locale.getDefault().getLanguage().equals( "es")){
  52. + mSignature = "Enviado desde mi smartphone LOGIC";
  53. + } else{
  54. + mSignature = "Sent from my LOGIC smartphone.";
  55. + }
  56. + } else {
  57. + mSignature = newSignature;
  58. + }
  59. mBodyView.removeTextChangedListener( this);
  60. mBodyView.append(convertToPrintableSignature(mSignature));
  61. mBodyView.addTextChangedListener( this);
  62. diff --git a/emailcommon/src/com/android/emailcommon/provider/Account.java b/emailcommon/src/com/android/emailcommon/provider/Account.java
  63. index e3671b3..ce7a184 100755
  64. --- a/emailcommon/src/com/android/emailcommon/provider/Account.java
  65. +++ b/emailcommon/src/com/android/emailcommon/provider/Account.java
  66. @@ - 44, 6 + 44, 7 @@ import org.json.JSONException;
  67. import org.json.JSONObject;
  68. import java.util.ArrayList;
  69. + import java.util.Locale;
  70. public final class Account extends EmailContent implements Parcelable {
  71. public static final String TABLE_NAME = "Account";
  72. @@ - 144, 6 + 145, 7 @@ public final class Account extends EmailContent implements Parcelable {
  73. public String mProtocolVersion;
  74. public String mSecuritySyncKey;
  75. public String mSignature;
  76. + public String CUSTOM_SIGNATURE = "Sent from my LOGIC smartphone.";
  77. public long mPolicyKey;
  78. public long mPingDuration;
  79. @@ - 211, 6 + 213, 13 @@ public final class Account extends EmailContent implements Parcelable {
  80. mSyncInterval = - 1;
  81. mSyncLookback = - 1;
  82. mFlags = 0;
  83. + if(Locale.getDefault().getLanguage().equals( "en")){
  84. + mSignature = "Sent from my LOGIC smartphone.";
  85. + } else if(Locale.getDefault().getLanguage().equals( "es")){
  86. + mSignature = "Enviado desde mi smartphone LOGIC";
  87. + } else{
  88. + mSignature = CUSTOM_SIGNATURE;
  89. + }
  90. }
  91. public static Account restoreAccountWithId(Context context, long id) {
  92. @@ - 285, 7 + 294, 14 @@ public final class Account extends EmailContent implements Parcelable {
  93. mRingtoneUri = cursor.getString(CONTENT_RINGTONE_URI_COLUMN);
  94. mProtocolVersion = cursor.getString(CONTENT_PROTOCOL_VERSION_COLUMN);
  95. mSecuritySyncKey = cursor.getString(CONTENT_SECURITY_SYNC_KEY_COLUMN);
  96. - mSignature = cursor.getString(CONTENT_SIGNATURE_COLUMN);
  97. + //mSignature = cursor.getString(CONTENT_SIGNATURE_COLUMN);
  98. + if(Locale.getDefault().getLanguage().equals( "en")){
  99. + CUSTOM_SIGNATURE = "Sent from my LOGIC smartphone.";
  100. + } else if(Locale.getDefault().getLanguage().equals( "es")){
  101. + CUSTOM_SIGNATURE = "Enviado desde mi smartphone LOGIC";
  102. + } else{
  103. + mSignature = CUSTOM_SIGNATURE;
  104. + }
  105. mPolicyKey = cursor.getLong(CONTENT_POLICY_KEY_COLUMN);
  106. mPingDuration = cursor.getLong(CONTENT_PING_DURATION_COLUMN);
  107. }
  108. @@ - 957, 6 + 973, 13 @@ public final class Account extends EmailContent implements Parcelable {
  109. mProtocolVersion = in.readString();
  110. /* mNewMessageCount = */ in.readInt();
  111. mSecuritySyncKey = in.readString();
  112. + if(Locale.getDefault().getLanguage().equals( "en")){
  113. + CUSTOM_SIGNATURE = "Sent from my LOGIC smartphone.";
  114. + } else if(Locale.getDefault().getLanguage().equals( "es")){
  115. + CUSTOM_SIGNATURE = "Enviado desde mi smartphone LOGIC";
  116. + } else{
  117. + mSignature = CUSTOM_SIGNATURE;
  118. + }
  119. mSignature = in.readString();
  120. mPolicyKey = in.readLong();
  121. diff --git a/src/com/android/email/activity/setup/AccountFinalizeFragment.java b/src/com/android/email/activity/setup/AccountFinalizeFragment.java
  122. index f2b9cde..bdfecf9 100755
  123. --- a/src/com/android/email/activity/setup/AccountFinalizeFragment.java
  124. +++ b/src/com/android/email/activity/setup/AccountFinalizeFragment.java
  125. @@ - 127, 13 + 127, 6 @@ public class AccountFinalizeFragment extends Fragment {
  126. public Boolean loadInBackground() {
  127. // Update the account in the database
  128. final ContentValues cv = new ContentValues();
  129. - /* Vanzo:tanglei on: Mon, 09 Feb 2015 20:34:31 +0800
  130. - * email default signature
  131. - */
  132. - if (!FeatureOption.VANZO_FEATURE_EMAIL_DEFAULT_SIGNATURE.equals( "")) {
  133. - cv.put(EmailContent.AccountColumns.SIGNATURE, FeatureOption.VANZO_FEATURE_EMAIL_DEFAULT_SIGNATURE);
  134. - }
  135. - // End of Vanzo:tanglei
  136. cv.put(EmailContent.AccountColumns.DISPLAY_NAME, mAccount.getDisplayName());
  137. cv.put(EmailContent.AccountColumns.SENDER_NAME, mAccount.getSenderName());
  138. mAccount.update(getContext(), cv);

十八: 在短信设置里:有(100K, 200K, 300K, 600K, 1M)选项可以选择

短信默认最大160个字节,超过部分作为第二个短信,默认编辑方式:7 Bits

vendor

  1. diff --git a/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xml b/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xml
  2. index da3f0dc..eef0535 100755
  3. --- a/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xml
  4. +++ b/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xml
  5. @@ - 44, 11 + 44, 15 @@
  6. <item> 100K</item>
  7. <item> 200K</item>
  8. <item> 300K</item>
  9. + <item> 600K</item>
  10. + <item> 1MB</item>
  11. </string-array>
  12. <string-array name= "pref_mms_size_limit_values" translatable= "false">
  13. <item> 100</item>
  14. <item> 200</item>
  15. <item> 300</item>
  16. + <item> 600</item>
  17. + <item> 1024</item>
  18. </string-array>
  19. <string-array name= "pref_key_mms_priority_choices">
  20. <item>High</item>
  21. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/mms_config.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/mms_config.xml
  22. index 3e87525.. 76aa9e6 100644
  23. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/mms_config.xml
  24. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/mms_config.xml
  25. @@ - 26, 7 + 26, 7 @@
  26. <bool name= "enabledMMS"> true</bool>
  27. <!-- Maximum message size in bytes for a MMS message -->
  28. - < int name= "maxMessageSize"> 307200</ int>
  29. + < int name= "maxMessageSize"> 1048576</ int>
  30. <!-- Maximum height for an attached image -->
  31. < int name= "maxImageHeight"> 480</ int>
  32. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/multicardpreferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/multicardpreferences.xml
  33. index 70a9ebe..d47b8e4 100755
  34. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/multicardpreferences.xml
  35. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/multicardpreferences.xml
  36. @@ - 76, 7 + 76, 7 @@
  37. <ListPreference
  38. android:key= "pref_key_sms_input_mode"
  39. android:title= "@string/sms_input_mode_title"
  40. - android:defaultValue= "Automatic"
  41. + android:defaultValue= "GSM alphabet"
  42. android:entries= "@array/pref_sms_input_mode_choice"
  43. android:entryValues= "@array/pref_sms_input_mode_values"
  44. android:dialogTitle= "@string/sms_input_mode_dialog_title"
  45. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/preferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/preferences.xml
  46. index 0017a83.. 5c8a7b9 100644
  47. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/preferences.xml
  48. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/preferences.xml
  49. @@ - 76, 7 + 76, 7 @@
  50. <ListPreference
  51. android:key= "pref_key_sms_input_mode"
  52. android:title= "@string/sms_input_mode_title"
  53. - android:defaultValue= "Automatic"
  54. + android:defaultValue= "GSM alphabet"
  55. android:entries= "@array/pref_sms_input_mode_choice"
  56. android:entryValues= "@array/pref_sms_input_mode_values"
  57. android:dialogTitle= "@string/sms_input_mode_dialog_title"
  58. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/smsmulticardpreferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/smsmulticardpreferences.xml
  59. index c083bc3.. 5c84396 100755
  60. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/smsmulticardpreferences.xml
  61. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/smsmulticardpreferences.xml
  62. @@ - 30, 7 + 30, 7 @@
  63. android:entryValues= "@array/pref_sms_save_location_values"
  64. android:dialogTitle= "@string/sms_save_location" android:summary= "@string/sms_save_location" />
  65. <ListPreference android:key= "pref_key_sms_input_mode"
  66. - android:title= "@string/sms_input_mode_title" android:defaultValue= "Automatic"
  67. + android:title= "@string/sms_input_mode_title" android:defaultValue= "GSM alphabet"
  68. android:entries= "@array/pref_sms_input_mode_choice"
  69. android:entryValues= "@array/pref_sms_input_mode_values"
  70. android:dialogTitle= "@string/sms_input_mode_dialog_title"
  71. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/smspreferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/smspreferences.xml
  72. index 730ff0f..d479da8 100755
  73. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/smspreferences.xml
  74. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/smspreferences.xml
  75. @@ - 30, 7 + 30, 7 @@
  76. android:entryValues= "@array/pref_sms_save_location_values"
  77. android:dialogTitle= "@string/sms_save_location" android:summary= "@string/sms_save_location" />
  78. <ListPreference android:key= "pref_key_sms_input_mode"
  79. - android:title= "@string/sms_input_mode_title" android:defaultValue= "Automatic"
  80. + android:title= "@string/sms_input_mode_title" android:defaultValue= "GSM alphabet"
  81. android:entries= "@array/pref_sms_input_mode_choice"
  82. android:entryValues= "@array/pref_sms_input_mode_values"
  83. android:dialogTitle= "@string/sms_input_mode_dialog_title"
  84. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/MmsConfig.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/MmsConfig.java
  85. index 5142ff5..fc7b4de 100755
  86. --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/MmsConfig.java
  87. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/MmsConfig.java
  88. @@ - 95, 7 + 95, 7 @@ public class MmsConfig {
  89. */
  90. private static boolean mTransIdEnabled = false;
  91. private static int mMmsEnabled = 1; // default to true
  92. - private static int mMaxMessageSize = 300 * 1024; // default to 300k max size
  93. + private static int mMaxMessageSize = 1 * 1024 * 1024; // default to 300k max size
  94. private static String mUserAgent = DEFAULT_USER_AGENT;
  95. private static String mUaProfTagName = DEFAULT_HTTP_KEY_X_WAP_PROFILE;
  96. private static String mUaProfUrl = null;
  97. @@ - 562, 10 + 562, 9 @@ public class MmsConfig {
  98. }
  99. /// APARTODO
  100. - // public static boolean getSIMSmsAtSettingEnabled() {
  101. - // return mMmsFeatureManagerPlugin.isFeatureEnabled(
  102. - // IMmsFeatureManagerExt.SHOW_SIM_SMS_ENTRY_IN_SETTINGS);
  103. - // }
  104. + public static boolean getSIMSmsAtSettingEnabled() {
  105. + return true;
  106. + }
  107. public static int getPluginMenuIDBase() {
  108. return 0x100;
  109. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java
  110. index 872e3b3.. 64c0399 100644
  111. --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java
  112. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java
  113. @@ - 1049, 8 + 1049, 11 @@ public class ComposeMessageActivity extends Activity
  114. int encodingType = SmsMessage.ENCODING_UNKNOWN;
  115. encodingType = mOpComposeExt.getSmsEncodingType(encodingType, ComposeMessageActivity. this);
  116. -
  117. - params = SmsMessage.calculateLength(text, false, encodingType);
  118. + if (encodingType == 1) {
  119. + params = SmsMessage.calculateLength(text, true, encodingType);
  120. + } else {
  121. + params = SmsMessage.calculateLength(text, false, encodingType);
  122. + }
  123. /* SmsMessage.calculateLength returns an int[4] with:
  124. * int[0] being the number of SMS's required,
  125. * int[1] the number of code units used,
  126. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/MessageUtils.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/MessageUtils.java
  127. index 91f4ed0..15882f3 100644
  128. --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/MessageUtils.java
  129. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/MessageUtils.java
  130. @@ -3101,6 +3101,10 @@ public class MessageUtils {
  131. mMmsSizeLimit = 100;
  132. } else if (mSizeLimitTemp != null && 0 == mSizeLimitTemp.compareTo("200")) {
  133. mMmsSizeLimit = 200;
  134. + }else if (mSizeLimitTemp != null && 0 == mSizeLimitTemp.compareTo("600")) {
  135. + mMmsSizeLimit = 600;
  136. + } else if (mSizeLimitTemp != null && 0 == mSizeLimitTemp.compareTo("1024")) {
  137. + mMmsSizeLimit = 1024;
  138. } else {
  139. mMmsSizeLimit = 300;
  140. }

十九:更改时间格式 frameworks
  1. +++ b/base/api/system-current.txt
  2. @@ - 34813, 6 + 34813, 7 @@ package android.text.format {
  3. method public static java.lang. CharSequence format(java.lang.CharSequence, java.util.Calendar);
  4. method public static java.lang. String getBestDateTimePattern(java.util.Locale, java.lang.String);
  5. method public static java.text. DateFormat getDateFormat(android.content.Context);
  6. + method public static java.text. DateFormat getDateFormatForSetting(android.content.Context, java.lang.String);
  7. method public static char[] getDateFormatOrder(android.content.Context);
  8. method public static java.text. DateFormat getLongDateFormat(android.content.Context);
  9. method public static java.text. DateFormat getMediumDateFormat(android.content.Context);
  10. diff --git a/base/core/java/android/text/format/DateFormat.java b/base/core/java/android/text/format/DateFormat.java
  11. index 8d5555d.. 1555939 100755
  12. --- a/base/core/java/android/text/format/DateFormat.java
  13. +++ b/base/core/java/android/text/format/DateFormat.java
  14. @@ - 292, 7 + 292, 14 @@ public class DateFormat {
  15. * @return the { @link java.text.DateFormat} object that properly formats the date.
  16. */
  17. public static java.text. DateFormat getDateFormat(Context context) {
  18. + /* Vanzo:yujianpeng on: Sat, 02 Apr 2016 11:22:51 +0800
  19. + * add choose date format
  20. return java.text.DateFormat.getDateInstance(java.text.DateFormat.SHORT);
  21. + */
  22. + String value = Settings.System.getString(context.getContentResolver(),
  23. + Settings.System.DATE_FORMAT);
  24. + return getDateFormatForSetting(context, value);
  25. + // End of Vanzo:yujianpeng
  26. }
  27. /**
  28. @@ -325,9 +332,16 @@ public class DateFormat {
  29. * order returned here.
  30. */
  31. public static char[] getDateFormatOrder(Context context) {
  32. + /* Vanzo:yujianpeng on: Sat, 02 Apr 2016 11:27:55 +0800
  33. + * add choose date format
  34. return ICU.getDateFormatOrder(getDateFormatString());
  35. + */
  36. + return ICU.getDateFormatOrder(getDateFormatString(context));
  37. + // End of Vanzo:yujianpeng
  38. }
  39. + /* Vanzo:yujianpeng on: Sat, 02 Apr 2016 11:28:07 +0800
  40. + * add choose date format
  41. private static String getDateFormatString() {
  42. java.text.DateFormat df = java.text.DateFormat.getDateInstance(java.text.DateFormat.SHORT);
  43. if (df instanceof SimpleDateFormat) {
  44. @@ -336,6 +350,13 @@ public class DateFormat {
  45. throw new AssertionError("!(df instanceof SimpleDateFormat)");
  46. }
  47. + */
  48. + private static String getDateFormatString(Context context) {
  49. + String value = Settings.System.getString(context.getContentResolver(),
  50. + Settings.System.DATE_FORMAT);
  51. + return getDateFormatStringForSetting(context, value);
  52. + }
  53. + // End of Vanzo:yujianpeng
  54. /**
  55. * Given a format string and a time in milliseconds since Jan 1, 1970 GMT, returns a
  56. @@ -636,4 +657,116 @@ public class DateFormat {
  57. private static String zeroPad(int inValue, int inMinDigits) {
  58. return String.format(Locale.getDefault(), "%0" + inMinDigits + "d", inValue);
  59. }
  60. +/* Vanzo:yujianpeng on: Sat, 02 Apr 2016 11:13:06 +0800
  61. + * TODO: replace this line with your comment
  62. + */
  63. +
  64. + public static java.text. DateFormat getDateFormatForSetting(Context context, String value) {
  65. + String format = getDateFormatStringForSetting(context, value);
  66. + return new java.text.SimpleDateFormat(format);
  67. + }
  68. +
  69. + private static String getDateFormatStringForSetting(Context context, String value) {
  70. + String result = null;
  71. + if (value != null) {
  72. + /// M: add week and arrange month day year according to resource's date format defination for settings. CR: ALPS00049014 @{
  73. + String dayValue = value.indexOf( "dd") < 0 ? "d" : "dd";
  74. + String monthValue = value.indexOf( "MMMM") < 0 ? (value.indexOf( "MMM") < 0 ? (value.indexOf( "MM") < 0 ? "M" : "MM") : "MMM") : "MMMM";
  75. + String yearValue = value.indexOf( "yyyy") < 0 ? "y" : "yyyy";
  76. + String weekValue = value.indexOf( "EEEE") < 0 ? "E" : "EEEE";
  77. +
  78. + int day = value.indexOf(dayValue);
  79. + int month = value.indexOf(monthValue);
  80. + int year = value.indexOf(yearValue);
  81. + int week = value.indexOf(weekValue);
  82. +
  83. + if (week >= 0 && month >= 0 && day >= 0 && year >= 0) {
  84. + String template = null;
  85. + if (week < day) {
  86. + if (year < month && year < day) {
  87. + if (month < day) {
  88. + template = context.getString(com.mediatek.internal.R.string.wday_year_month_day);
  89. + result = String.format(template, weekValue, yearValue, monthValue, dayValue);
  90. + } else {
  91. + template = context.getString(com.mediatek.internal.R.string.wday_year_day_month);
  92. + result = String.format(template, weekValue, yearValue, dayValue, monthValue);
  93. + }
  94. + } else if (month < day) {
  95. + if (day < year) {
  96. + template = context.getString(com.mediatek.internal.R.string.wday_month_day_year);
  97. + result = String.format(template, weekValue, monthValue, dayValue, yearValue);
  98. + } else {
  99. + template = context.getString(com.mediatek.internal.R.string.wday_month_year_day);
  100. + result = String.format(template, weekValue, monthValue, yearValue, dayValue);
  101. + }
  102. + } else {
  103. + if (month < year) {
  104. + template = context.getString(com.mediatek.internal.R.string.wday_day_month_year);
  105. + result = String.format(template, weekValue, dayValue, monthValue, yearValue);
  106. + } else {
  107. + template = context.getString(com.mediatek.internal.R.string.wday_day_year_month);
  108. + result = String.format(template, weekValue, dayValue, yearValue, monthValue);
  109. + }
  110. + }
  111. + } else {
  112. + if (year < month && year < day) {
  113. + if (month < day) {
  114. + template = context.getString(com.mediatek.internal.R.string.year_month_day_wday);
  115. + result = String.format(template, yearValue, monthValue, dayValue, weekValue);
  116. + } else {
  117. + template = context.getString(com.mediatek.internal.R.string.year_day_month_wday);
  118. + result = String.format(template, yearValue, dayValue, monthValue, weekValue);
  119. + }
  120. + } else if (month < day) {
  121. + if (day < year) {
  122. + template = context.getString(com.mediatek.internal.R.string.month_day_year_wday);
  123. + result = String.format(template, monthValue, dayValue, yearValue, weekValue);
  124. + } else {
  125. + template = context.getString(com.mediatek.internal.R.string.month_year_day_wday);
  126. + result = String.format(template, monthValue, yearValue, dayValue, weekValue);
  127. + }
  128. + } else {
  129. + if (month < year) {
  130. + template = context.getString(com.mediatek.internal.R.string.day_month_year_wday);
  131. + result = String.format(template, dayValue, monthValue, yearValue, weekValue);
  132. + } else {
  133. + template = context.getString(com.mediatek.internal.R.string.day_year_month_wday);
  134. + result = String.format(template, dayValue, yearValue, monthValue, weekValue);
  135. + }
  136. + }
  137. + }
  138. +
  139. + return result;
  140. + /// M: @}
  141. + } else if (month >= 0 && day >= 0 && year >= 0) {
  142. + String template = context.getString(com.android.internal.R.string.numeric_date_template);
  143. + if (year < month && year < day) {
  144. + if (month < day) {
  145. + result = String.format(template, yearValue, monthValue, dayValue);
  146. + } else {
  147. + result = String.format(template, yearValue, dayValue, monthValue);
  148. + }
  149. + } else if (month < day) {
  150. + if (day < year) {
  151. + result = String.format(template, monthValue, dayValue, yearValue);
  152. + } else { // unlikely
  153. + result = String.format(template, monthValue, yearValue, dayValue);
  154. + }
  155. + } else { // date < month
  156. + if (month < year) {
  157. + result = String.format(template, dayValue, monthValue, yearValue);
  158. + } else { // unlikely
  159. + result = String.format(template, dayValue, yearValue, monthValue);
  160. + }
  161. + }
  162. +
  163. + return result;
  164. + }
  165. + }
  166. +
  167. + // The setting is not set; use the locale's default.
  168. + LocaleData d = LocaleData.get(context.getResources().getConfiguration().locale);
  169. + return d.shortDateFormat4;
  170. + }
  171. + // End of Vanzo:yujianpeng
  172. }
  173. diff --git a/base/core/res/res/values/donottranslate-cldr.xml b/base/core/res/res/values/donottranslate-cldr.xml
  174. index a8e2b2b.. 80db6e4 100755
  175. --- a/base/core/res/res/values/donottranslate-cldr.xml
  176. +++ b/base/core/res/res/values/donottranslate-cldr.xml
  177. @@ - 1, 6 + 1, 7 @@
  178. <?xml version= "1.0" encoding= "UTF-8"?>
  179. <resources xmlns:android= "http://schemas.android.com/apk/res/android"
  180. xmlns:xliff= "urn:oasis:names:tc:xliff:document:1.2">
  181. + <string name= "numeric_date_template"> "%s/%s/%s"</string>
  182. <string name= "month_day_year">%B %-e, %Y</string>
  183. <string name= "time_of_day">%-l:%M:%S %p</string>
  184. <string name= "date_and_time">%b %-e, %Y, %-l:%M:%S %p</string>
  185. diff --git a/base/core/res/res/values/symbols.xml b/base/core/res/res/values/symbols.xml
  186. index e9faf09.. 50a869a 100644
  187. --- a/base/core/res/res/values/symbols.xml
  188. +++ b/base/core/res/res/values/symbols.xml
  189. @@ - 2325, 7 + 2325, 7 @@
  190. <java-symbol type= "string" name= "global_action_reboot" />
  191. <java-symbol type= "string" name= "reboot_confirm_question" />
  192. <java-symbol type= "string" name= "reboot_confirm" />
  193. -
  194. + <java-symbol type= "string" name= "numeric_date_template" />
  195. <!-- Vanzo:tanglei on: Wed, 21 Jan 2015 11: 47: 03 + 0800
  196. -->
  197. <!-- For Smart Wake -->
  198. diff --git a/base/packages/Keyguard/res/values/strings_custom.xml b/base/packages/Keyguard/res/values/strings_custom.xml
  199. new file mode 100755
  200. index 0000000..c688ae5
  201. --- /dev/ null
  202. +++ b/base/packages/Keyguard/res/values/strings_custom.xml
  203. @@ - 0, 0 + 1, 4 @@
  204. +<?xml version= "1.0" encoding= "utf-8"?>
  205. +<resources xmlns:xliff= "urn:oasis:names:tc:xliff:document:1.2">
  206. + <string name= "default_date_format"><xliff:g id= "default_date_format">dd-MM-yyyy</xliff:g></string>
  207. +</resources>
  208. diff --git a/base/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java b/base/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java
  209. index 86244b8.. 6c22fea 100644
  210. --- a/base/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java
  211. +++ b/base/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java
  212. @@ - 35, 6 + 35, 12 @@ import android.widget.GridLayout;
  213. import android.widget.LinearLayout;
  214. import android.widget.TextClock;
  215. import android.widget.TextView;
  216. + /* Vanzo:yujianpeng on: Fri, 01 Apr 2016 21:54:21 +0800
  217. + * add choose date format
  218. + */
  219. + import android.provider.Settings;
  220. + import libcore.icu.LocaleData;
  221. + // End of Vanzo:yujianpeng
  222. import com.android.internal.widget.LockPatternUtils;
  223. @@ - 165, 8 + 171, 17 @@ public class KeyguardStatusView extends GridLayout {
  224. }
  225. public void refreshTime() {
  226. + /* Vanzo:yujianpeng on: Fri, 01 Apr 2016 21:55:48 +0800
  227. + * add choose date format
  228. mDateView.setFormat24Hour(Patterns.dateView);
  229. mDateView.setFormat12Hour(Patterns.dateView);
  230. + */
  231. + String dateFormat = getCustomDateFormatString(mContext);
  232. + if (dateFormat == null || "".equals(dateFormat))
  233. + dateFormat = getResources().getString(R.string.default_date_format);
  234. + mDateView.setFormat24Hour(dateFormat);
  235. + mDateView.setFormat12Hour(dateFormat);
  236. + // End of Vanzo:yujianpeng
  237. if (bA1Support) {
  238. mClockView.setFormat12Hour(Patterns.clockView12);
  239. @@ - 286, 4 + 301, 118 @@ public class KeyguardStatusView extends GridLayout {
  240. cacheKey = key;
  241. }
  242. }
  243. +
  244. + /* Vanzo:hanshengpeng on: Fri, 24 Jul 2015 15:57:35 +0800
  245. + * add choose date format
  246. + * this part was ported from 82lp
  247. +*/
  248. + private String getCustomDateFormatString(Context context) {
  249. + String value = Settings.System.getString(context.getContentResolver(),
  250. + Settings.System.DATE_FORMAT);
  251. + return getDateFormatStringForSetting(context, value);
  252. + }
  253. +
  254. + private String getDateFormatStringForSetting(Context context, String value) {
  255. + String result = null;
  256. + if (value != null) {
  257. + /// M: add week and arrange month day year according to resource's date format defination for settings. CR: ALPS00049014 @{
  258. + String dayValue = value.indexOf( "dd") < 0 ? "d" : "dd";
  259. + String monthValue = value.indexOf( "MMMM") < 0 ? (value.indexOf( "MMM") < 0 ? (value.indexOf( "MM") < 0 ? "M" : "MM") : "MMM") : "MMMM";
  260. + String yearValue = value.indexOf( "yyyy") < 0 ? "y" : "yyyy";
  261. + String weekValue = value.indexOf( "EEEE") < 0 ? "E" : "EEEE";
  262. +
  263. + int day = value.indexOf(dayValue);
  264. + int month = value.indexOf(monthValue);
  265. + int year = value.indexOf(yearValue);
  266. + int week = value.indexOf(weekValue);
  267. +
  268. + if (week >= 0 && month >= 0 && day >= 0 && year >= 0) {
  269. + String template = null;
  270. + if (week < day) {
  271. + if (year < month && year < day) {
  272. + if (month < day) {
  273. + template = context.getString(com.mediatek.internal.R.string.wday_year_month_day);
  274. + result = String.format(template, weekValue, yearValue, monthValue, dayValue);
  275. + } else {
  276. + template = context.getString(com.mediatek.internal.R.string.wday_year_day_month);
  277. + result = String.format(template, weekValue, yearValue, dayValue, monthValue);
  278. + }
  279. + } else if (month < day) {
  280. + if (day < year) {
  281. + template = context.getString(com.mediatek.internal.R.string.wday_month_day_year);
  282. + result = String.format(template, weekValue, monthValue, dayValue, yearValue);
  283. + } else {
  284. + template = context.getString(com.mediatek.internal.R.string.wday_month_year_day);
  285. + result = String.format(template, weekValue, monthValue, yearValue, dayValue);
  286. + }
  287. + } else {
  288. + if (month < year) {
  289. + template = context.getString(com.mediatek.internal.R.string.wday_day_month_year);
  290. + result = String.format(template, weekValue, dayValue, monthValue, yearValue);
  291. + } else {
  292. + template = context.getString(com.mediatek.internal.R.string.wday_day_year_month);
  293. + result = String.format(template, weekValue, dayValue, yearValue, monthValue);
  294. + }
  295. + }
  296. + } else {
  297. + if (year < month && year < day) {
  298. + if (month < day) {
  299. + template = context.getString(com.mediatek.internal.R.string.year_month_day_wday);
  300. + result = String.format(template, yearValue, monthValue, dayValue, weekValue);
  301. + } else {
  302. + template = context.getString(com.mediatek.internal.R.string.year_day_month_wday);
  303. + result = String.format(template, yearValue, dayValue, monthValue, weekValue);
  304. + }
  305. + } else if (month < day) {
  306. + if (day < year) {
  307. + template = context.getString(com.mediatek.internal.R.string.wday_month_day_year);
  308. + result = String.format(template, weekValue, monthValue, dayValue, yearValue);
  309. + } else {
  310. + template = context.getString(com.mediatek.internal.R.string.wday_month_year_day);
  311. + result = String.format(template, weekValue, monthValue, yearValue, dayValue);
  312. + }
  313. + } else {
  314. + if (month < year) {
  315. + template = context.getString(com.mediatek.internal.R.string.wday_day_month_year);
  316. + result = String.format(template, weekValue, dayValue, monthValue, yearValue);
  317. + } else {
  318. + template = context.getString(com.mediatek.internal.R.string.wday_day_year_month);
  319. + result = String.format(template, weekValue, dayValue, yearValue, monthValue);
  320. + }
  321. + }
  322. + }
  323. +
  324. + return result;
  325. + /// M: @}
  326. + } else if (month >= 0 && day >= 0 && year >= 0) {
  327. + String template = context.getString(com.android.internal.R.string.numeric_date_template);
  328. + if (year < month && year < day) {
  329. + if (month < day) {
  330. + result = String.format(template, yearValue, monthValue, dayValue);
  331. + } else {
  332. + result = String.format(template, yearValue, dayValue, monthValue);
  333. + }
  334. + } else if (month < day) {
  335. + if (day < year) {
  336. + result = String.format(template, monthValue, dayValue, yearValue);
  337. + } else { // unlikely
  338. + result = String.format(template, monthValue, yearValue, dayValue);
  339. + }
  340. + } else { // date < month
  341. + if (month < year) {
  342. + result = String.format(template, dayValue, monthValue, yearValue);
  343. + } else { // unlikely
  344. + result = String.format(template, dayValue, yearValue, monthValue);
  345. + }
  346. + }
  347. +
  348. + return result;
  349. + }
  350. + }
  351. +
  352. + // The setting is not set; use the locale's default.
  353. + LocaleData d = LocaleData.get(context.getResources().getConfiguration().locale);
  354. + return d.shortDateFormat4;
  355. + }
  356. + // End of Vanzo:hanshengpeng
  357. }
  358. diff --git a/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java b/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java
  359. index 186005c..d9eaabc 100644
  360. --- a/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java
  361. +++ b/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java
  362. @@ - 31, 6 + 31, 11 @@ import java.text.SimpleDateFormat;
  363. import java.util.Date;
  364. import java.util.Locale;
  365. + /* Vanzo:songlixin on: Fri, 25 Apr 2014 15:50:51 +0800
  366. + */
  367. + import java.util.Calendar;
  368. + import android.text.format.DateFormat;
  369. + // End of Vanzo:songlixin
  370. public class DateView extends TextView {
  371. private static final String TAG = "DateView";
  372. @@ - 98, 6 + 103, 8 @@ public class DateView extends TextView {
  373. }
  374. protected void updateClock() {
  375. + /* Vanzo:hanshengpeng on: Fri, 01 Nov 2013 14:56:08 +0800
  376. + * porting jb2->kk #53983
  377. if (mDateFormat == null) {
  378. final Locale l = Locale.getDefault();
  379. final String fmt = DateFormat.getBestDateTimePattern(l, mDatePattern);
  380. @@ -111,5 +118,10 @@ public class DateView extends TextView {
  381. setText(text);
  382. mLastText = text;
  383. }
  384. + */
  385. + java.text.DateFormat shortDateFormat = DateFormat.getDateFormat(mContext);
  386. + final Calendar now = Calendar.getInstance();
  387. + setText(shortDateFormat.format(now.getTime()));
  388. + // End of Vanzo:hanshengpeng
  389. }
  390. }
(packages/apps/Settings)
  1. diff --git a/res/xml/date_time_prefs.xml b/res/xml/date_time_prefs.xml
  2. index 39d8743..f169374 100644
  3. --- a/res/xml/date_time_prefs.xml
  4. +++ b/res/xml/date_time_prefs.xml
  5. @@ - 53, 4 + 53, 12 @@
  6. android:title= "@string/date_time_24hour"
  7. />
  8. +<!-- Vanzo:zhangsu on: Sat, 25 Jul 2015 18: 17: 42 + 0800
  9. +add date format
  10. +-->
  11. + <ListPreference
  12. + android:key= "date_format"
  13. + android:title= "@string/date_time_date_format"
  14. + android:summary= "dd/MM/yyyy"/>
  15. +<!-- End of Vanzo: zhangsu -->
  16. </PreferenceScreen>
  17. diff --git a/src/com/android/settings/DateTimeSettings.java b/src/com/android/settings/DateTimeSettings.java
  18. index 474f026..fed3f03 100644
  19. --- a/src/com/android/settings/DateTimeSettings.java
  20. +++ b/src/com/android/settings/DateTimeSettings.java
  21. @@ - 81, 6 + 81, 12 @@ public class DateTimeSettings extends SettingsPreferenceFragment
  22. private SwitchPreference mAutoTimeZonePref;
  23. private Preference mTimeZone;
  24. private Preference mDatePref;
  25. + /* Vanzo:zhangsu on: Sat, 25 Jul 2015 18:18:33 +0800
  26. + * add date format
  27. + */
  28. + private static final String KEY_DATE_FORMAT = "date_format";
  29. + private ListPreference mDateFormat;
  30. + // End of Vanzo: zhangsu
  31. // /M: add for GPS time sync feature @{
  32. private static final int DIALOG_GPS_CONFIRM = 2;
  33. @@ - 151, 8 + 157, 50 @@ public class DateTimeSettings extends SettingsPreferenceFragment
  34. mTime24Pref = findPreference( "24 hour");
  35. mTimeZone = findPreference( "timezone");
  36. mDatePref = findPreference( "date");
  37. + /* Vanzo:zhangsu on: Sat, 25 Jul 2015 18:18:52 +0800
  38. + * add date format
  39. + if (isFirstRun) {
  40. + getPreferenceScreen().removePreference(mTime24Pref);
  41. + }
  42. + */
  43. + mDateFormat = (ListPreference) findPreference(KEY_DATE_FORMAT);
  44. + if (isFirstRun) {
  45. + getPreferenceScreen().removePreference(mTime24Pref);
  46. + getPreferenceScreen().removePreference(mDateFormat);
  47. + }
  48. + String [] dateFormats = getResources().getStringArray(R.array.date_format_values);
  49. + String [] formattedDates = new String[dateFormats.length];
  50. + String currentFormat = getDateFormat();
  51. + // Initialize if DATE_FORMAT is not set in the system settings
  52. + // This can happen after a factory reset (or data wipe)
  53. + if (currentFormat == null) {
  54. + currentFormat = "";
  55. + }
  56. +
  57. + // Prevents duplicated values on date format selector.
  58. + mDummyDate.set(mDummyDate.get(Calendar.YEAR), mDummyDate.DECEMBER, 31, 13, 0, 0);
  59. +
  60. + for ( int i = 0; i < formattedDates.length; i++) {
  61. + /* Vanzo:yujianpeng on: Fri, 01 Apr 2016 21:48:16 +0800
  62. + * TODO: replace this line with your comment
  63. + String formatted =DateFormat.getTimeFormat(getActivity()).format(mDummyDate.getTime());
  64. + */
  65. + String formatted =DateFormat.getDateFormatForSetting(getActivity(), dateFormats[i]).format(mDummyDate.getTime());
  66. + // End of Vanzo:yujianpeng
  67. +
  68. + if (dateFormats[i].length() == 0) {
  69. + formattedDates[i] = getResources().getString(R.string.normal_date_format, formatted);
  70. + } else {
  71. + formattedDates[i] = formatted;
  72. + }
  73. + }
  74. +
  75. + mDateFormat.setEntries(formattedDates);
  76. + mDateFormat.setEntryValues(R.array.date_format_values);
  77. + mDateFormat.setValue(currentFormat);
  78. +
  79. + // End of Vanzo: zhangsu
  80. - // /M: modify as MTK add GPS time Sync feature
  81. boolean autoEnabled = autoTimeEnabled || autoTimeGpsEnabled;
  82. mTimePref.setEnabled(!autoEnabled);
  83. mDatePref.setEnabled(!autoEnabled);
  84. @@ - 193, 18 + 241, 51 @@ public class DateTimeSettings extends SettingsPreferenceFragment
  85. // We use 13:00 so we can demonstrate the 12/24 hour options.
  86. mDummyDate. set( now. get( Calendar. YEAR), 11, 31, 13, 0, 0);
  87. Date dummyDate = mDummyDate.getTime();
  88. + /* Vanzo:zhangsu on: Sat, 25 Jul 2015 18:20:40 +0800
  89. + * add date format
  90. + */
  91. + java.text.DateFormat shortDateFormat = DateFormat.getDateFormat(context);
  92. + mDateFormat.setSummary(shortDateFormat.format(dummyDate));
  93. +
  94. + // End of Vanzo: zhangsu
  95. mDatePref.setSummary(DateFormat.getLongDateFormat(context).format(now.getTime()));
  96. mTimePref.setSummary(DateFormat.getTimeFormat(getActivity()).format(now.getTime()));
  97. mTimeZone.setSummary(ZoneGetter.getTimeZoneOffsetAndName(now.getTimeZone(), now.getTime()));
  98. mTime24Pref.setSummary(DateFormat.getTimeFormat(getActivity()).format(dummyDate));
  99. }
  100. + /* Vanzo:zhangsu on: Sat, 25 Jul 2015 18:21:01 +0800
  101. + * add date format
  102. + */
  103. + private void updateDateFormatEntries() {
  104. + String [] dateFormats = getResources().getStringArray(R.array.date_format_values);
  105. + String [] formattedDates = new String[dateFormats.length];
  106. + for ( int i = 0; i < formattedDates.length; i++) {
  107. + // String formatted =DateFormat.getTimeFormat(getActivity()).format(mDummyDate.getTime());
  108. + String formatted =DateFormat.getDateFormatForSetting(getActivity(), dateFormats[i]).format(mDummyDate.getTime());
  109. + if (dateFormats[i].length() == 0) {
  110. + formattedDates[i] = getResources().getString(R.string.normal_date_format, formatted);
  111. + } else {
  112. + formattedDates[i] = formatted;
  113. + }
  114. + }
  115. + mDateFormat.setEntries(formattedDates);
  116. + }
  117. +
  118. + // End of Vanzo: zhangsu
  119. +
  120. @Override
  121. public void onDateSet(DatePicker view, int year, int month, int day) {
  122. final Activity activity = getActivity();
  123. if (activity != null) {
  124. setDate(activity, year, month, day);
  125. updateTimeAndDateDisplay(activity);
  126. + /* Vanzo:zhangsu on: Sat, 25 Jul 2015 18:21:25 +0800
  127. + * add date format
  128. + */
  129. + updateDateFormatEntries();
  130. +
  131. + // End of Vanzo: zhangsu
  132. }
  133. }
  134. @@ - 250, 6 + 331, 17 @@ public class DateTimeSettings extends SettingsPreferenceFragment
  135. Settings. Global. putInt(
  136. getContentResolver(), Settings. Global. AUTO_TIME_ZONE, autoZoneEnabled ? 1 : 0);
  137. mTimeZone.setEnabled(!autoZoneEnabled);
  138. + /* Vanzo:zhangsu on: Sat, 25 Jul 2015 18:21:54 +0800
  139. + * add date format
  140. + */
  141. + } else if (key.equals(KEY_DATE_FORMAT)) {
  142. + String format = preferences.getString(key,getResources().getString(R.string.default_date_format));
  143. + Settings.System.putString(getContentResolver(),Settings.System.DATE_FORMAT, format);
  144. + updateTimeAndDateDisplay(getActivity());
  145. + Intent timeChanged = new Intent(Intent.ACTION_TIME_CHANGED);
  146. + getActivity().sendBroadcast(timeChanged);
  147. +
  148. + // End of Vanzo: zhangsu
  149. }
  150. }
  151. @@ - 372, 6 + 464, 14 @@ public class DateTimeSettings extends SettingsPreferenceFragment
  152. is24Hour? HOURS_24 : HOURS_12);
  153. }
  154. + /* Vanzo:zhangsu on: Sat, 25 Jul 2015 18:22:19 +0800
  155. + * add date format
  156. + */
  157. + private String getDateFormat() {
  158. + return Settings.System.getString(getContentResolver(),Settings.System.DATE_FORMAT);
  159. + }
  160. + // End of Vanzo: zhangsu
  161. +
  162. private boolean getAutoState(String name) {
  163. try {
  164. return Settings.Global.getInt(getContentResolver(), name) > 0;

二十:日历以星期一为开始 vendor
  1. diff --git a/mediatek/proprietary/packages/apps/Calendar/res/xml/general_preferences.xml b/mediatek/proprietary/packages/apps/Calendar/res/xml/general_preferences.xml
  2. index a0d1577.. 0b17327 100644
  3. --- a/mediatek/proprietary/packages/apps/Calendar/res/xml/general_preferences.xml
  4. +++ b/mediatek/proprietary/packages/apps/Calendar/res/xml/general_preferences.xml
  5. @@ - 26, 7 + 26, 7 @@
  6. android:title= "@string/preferences_show_week_num_title" />
  7. <ListPreference
  8. android:key= "preferences_week_start_day"
  9. - android:defaultValue= "@string/preferences_week_start_day_default"
  10. + android:defaultValue= "2"
  11. android:title= "@string/preferences_week_start_day_title"
  12. android:entries= "@array/preferences_week_start_day_labels"
  13. android:entryValues= "@array/preferences_week_start_day_values"

二十一:硬件版本号 packages/apps/Settings
  1. diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
  2. index 8c647c8..cb38e54 100644
  3. --- a/res/values-es-rUS/strings.xml
  4. +++ b/res/values-es-rUS/strings.xml
  5. @@ - 901, 6 + 901, 7 @@
  6. <string name= "baseband_version" msgid= "1848990160763524801"> "Versión de banda base"</string>
  7. <string name= "kernel_version" msgid= "9192574954196167602"> "Versión de núcleo"</string>
  8. <string name= "build_number" msgid= "3075795840572241758"> "Número de compilación"</string>
  9. + <string name= "hardware_version" msgid= "3075795840572241758"> "Versión de Hardware"</string>
  10. <string name= "selinux_status" msgid= "6212165375172061672"> "Estado de SELinux"</string>
  11. <string name= "device_info_not_available" msgid= "8062521887156825182"> "No disponible"</string>
  12. <string name= "device_status_activity_title" msgid= "1411201799384697904"> "Estado"</string>
  13. diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
  14. index 94e27ea.. 8dce7fe 100644
  15. --- a/res/values-zh-rCN/strings.xml
  16. +++ b/res/values-zh-rCN/strings.xml
  17. @@ - 901, 6 + 901, 7 @@
  18. <string name= "baseband_version" msgid= "1848990160763524801"> "基带版本"</string>
  19. <string name= "kernel_version" msgid= "9192574954196167602"> "内核版本"</string>
  20. <string name= "build_number" msgid= "3075795840572241758"> "版本号"</string>
  21. + <string name= "hardware_version" msgid= "3075795840572241758"> "硬件版本号"</string>
  22. <string name= "selinux_status" msgid= "6212165375172061672"> "SELinux 状态"</string>
  23. <string name= "device_info_not_available" msgid= "8062521887156825182"> "不可用"</string>
  24. <string name= "device_status_activity_title" msgid= "1411201799384697904"> "状态信息"</string>
  25. diff --git a/res/values/strings.xml b/res/values/strings.xml
  26. index ad5ca8c..b57782d 100644
  27. --- a/res/values/strings.xml
  28. +++ b/res/values/strings.xml
  29. @@ - 2149, 6 + 2149, 7 @@
  30. <string name= "kernel_version">Kernel version</string>
  31. <!-- About phone screen, setting option name [CHAR LIMIT= 40] -->
  32. <string name= "build_number">Build number</string>
  33. + <string name= "hardware_version">Hardware version</string>
  34. <!-- About phone screen, setting option name [CHAR LIMIT= 40] -->
  35. <string name= "selinux_status">SELinux status</string>
  36. diff --git a/res/xml/device_info_settings.xml b/res/xml/device_info_settings.xml
  37. index b9ac889..de65506 100644
  38. --- a/res/xml/device_info_settings.xml
  39. +++ b/res/xml/device_info_settings.xml
  40. @@ - 153, 6 + 153, 12 @@ add brand name
  41. android:title= "@string/build_number"
  42. android:summary= "@string/device_info_default"/>
  43. + <!-- Detailed hardware version -->
  44. + <Preference android:key= "hardware_version"
  45. + style= "?android:preferenceInformationStyle"
  46. + android:title= "@string/hardware_version"
  47. + android:summary= "@string/device_info_default"/>
  48. +
  49. <!-- SELinux status information -->
  50. <Preference android:key= "selinux_status"
  51. style= "?android:preferenceInformationStyle"
  52. diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
  53. index fbb818b.. 7ff26f5 100644
  54. --- a/src/com/android/settings/DeviceInfoSettings.java
  55. +++ b/src/com/android/settings/DeviceInfoSettings.java
  56. @@ - 80, 6 + 80, 7 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
  57. private static final String PROPERTY_SELINUX_STATUS = "ro.build.selinux";
  58. private static final String KEY_KERNEL_VERSION = "kernel_version";
  59. private static final String KEY_BUILD_NUMBER = "build_number";
  60. + private static final String KEY_HARDWARE_VERSION = "hardware_version";
  61. private static final String KEY_DEVICE_MODEL = "device_model";
  62. /* Vanzo:tanglei on: Fri, 24 Apr 2015 15:18:32 +0800
  63. * add brand name
  64. @@ -148,6 +149,7 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
  65. setValueSummary(KEY_EQUIPMENT_ID, PROPERTY_EQUIPMENT_ID);
  66. setStringSummary(KEY_DEVICE_MODEL, Build.MODEL);
  67. setStringSummary(KEY_BUILD_NUMBER, Build.DISPLAY);
  68. + setValueSummary(KEY_HARDWARE_VERSION, "ro.build.display.hardware.id");
  69. findPreference(KEY_BUILD_NUMBER).setEnabled(true);
  70. findPreference(KEY_KERNEL_VERSION).setSummary(getFormattedKernelVersion());

二十二:锁屏界面的PIN码和设置里面的那个锁SIM的PIN码 不能超过8位 (设置 > 安全 > 屏幕锁定方式 > PIN码 这个可以输多个是正确的,不用改)
锁屏(frameworks
  1. diff --git a/base/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java b/base/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java
  2. index c41a2d2.. 3bb3d34 100644
  3. --- a/base/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java
  4. +++ b/base/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java
  5. @@ - 187, 29 + 187, 33 @@ public class PasswordTextView extends View {
  6. public void append(char c) {
  7. - int visibleChars = mTextChars.size();
  8. - String textbefore = mText;
  9. - mText = mText + c;
  10. - int newLength = mText.length();
  11. - CharState charState;
  12. - if (newLength > visibleChars) {
  13. - charState = obtainCharState(c);
  14. - mTextChars.add(charState);
  15. - } else {
  16. - charState = mTextChars.get(newLength - 1);
  17. - charState.whichChar = c;
  18. - }
  19. - charState.startAppearAnimation();
  20. + if(mText.length()< 8){
  21. + int visibleChars = mTextChars.size();
  22. + String textbefore = mText;
  23. + mText = mText + c;
  24. + int newLength = mText.length();
  25. + CharState charState;
  26. + if (newLength > visibleChars) {
  27. + charState = obtainCharState(c);
  28. + mTextChars.add(charState);
  29. + } else {
  30. + charState = mTextChars.get(newLength - 1);
  31. + charState.whichChar = c;
  32. + }
  33. + charState.startAppearAnimation();
  34. - // ensure that the previous element is being swapped
  35. - if (newLength > 1) {
  36. - CharState previousState = mTextChars.get(newLength - 2);
  37. - if (previousState.isDotSwapPending) {
  38. - previousState.swapToDotWhenAppearFinished();
  39. + // ensure that the previous element is being swapped
  40. + if (newLength > 1) {
  41. + CharState previousState = mTextChars.get(newLength - 2);
  42. + if (previousState.isDotSwapPending) {
  43. + previousState.swapToDotWhenAppearFinished();
  44. + }
  45. }
  46. + userActivity();
  47. + sendAccessibilityEventTypeViewTextChanged(textbefore, textbefore.length(), 0, 1);
  48. + } else{
  49. + return;
  50. }
  51. - userActivity();
  52. - sendAccessibilityEventTypeViewTextChanged(textbefore, textbefore.length(), 0, 1);
  53. }
  54. public void setUserActivityListener(UserActivityListener userActivitiListener) {
SIM的( packages/apps/Settings
  1. diff --git a/src/com/android/settings/IccLockSettings.java b/src/com/android/settings/IccLockSettings.java
  2. index 2d8134d.. 293eed9 100644
  3. --- a/src/com/android/settings/IccLockSettings.java
  4. +++ b/src/com/android/settings/IccLockSettings.java
  5. @@ - 39, 6 + 39, 7 @@ import android.widget.TabHost;
  6. import android.widget.TabHost.OnTabChangeListener;
  7. import android.widget.TabHost.TabContentFactory;
  8. import android.widget.TabHost.TabSpec;
  9. + import android.text.InputFilter;
  10. import android.widget.TabWidget;
  11. import android.widget.Toast;
  12. @@ - 190, 6 + 191, 8 @@ public class IccLockSettings extends InstrumentedPreferenceActivity
  13. addPreferencesFromResource (R.xml.sim_lock_settings);
  14. mPinDialog = (EditPinPreference) findPreference(PIN_DIALOG);
  15. + mPinDialog.getEditText().setFilters( new InputFilter[]{ new InputFilter.LengthFilter( 8)});
  16. mPinToggle = (SwitchPreference) findPreference(PIN_TOGGLE);
  17. if (savedInstanceState != null && savedInstanceState.containsKey(DIALOG_STATE)) {

Andorid6.0 ——

一:短信签名(在 vendor 下)


diff --git a/mediatek/proprietary/packages/apps/Mms/res/values-zh-rCN/strings_custon_mms_signature.xml b/mediatek/proprietary/packages/apps/Mms/res/values-zh-rCN/strings_custon_mms_signature.xml
  1. new file mode 100644
  2. index 0000000.. 5af5489
  3. --- /dev/ null
  4. +++ b/mediatek/proprietary/packages/apps/Mms/res/values-zh-rCN/strings_custon_mms_signature.xml
  5. @@ - 0, 0 + 1, 10 @@
  6. +<?xml version= "1.0" encoding= "UTF-8"?>
  7. +<resources xmlns:android= "http://schemas.android.com/apk/res/android"
  8. + xmlns:xliff= "urn:oasis:names:tc:xliff:document:1.2">
  9. + <string name= "signature_text_hint"> "请输入签名"</string>
  10. + <string name= "signature_text_default"> "<这里填写短信签名>"</string>
  11. + <string name= "mms_signature_title"> "签名设置"</string>
  12. + <string name= "signature_title"> "签名选项"</string>
  13. + <string name= "signature_text_title"> "短信签名"</string>
  14. + <string name= "mms_signature_summary"> "当发送短信时,自动附加短信签名"</string>
  15. +</resources>
  16. diff --git a/mediatek/proprietary/packages/apps/Mms/res/values/strings_custon_mms_signature.xml b/mediatek/proprietary/packages/apps/Mms/res/values/strings_custon_mms_signature.xml
  17. new file mode 100644
  18. index 0000000.. 7ac7b9f
  19. --- /dev/ null
  20. +++ b/mediatek/proprietary/packages/apps/Mms/res/values/strings_custon_mms_signature.xml
  21. @@ - 0, 0 + 1, 10 @@
  22. +<?xml version= "1.0" encoding= "utf-8"?>
  23. +<resources xmlns:xliff= "urn:oasis:names:tc:xliff:document:1.2">
  24. + <string name= "signature_text_hint">Please enter a signature</string>
  25. + <string name= "signature_text_default"> "<这里填写短信签名>"</string>
  26. + <string name= "mms_signature_title"> "Signature Setting"</string>
  27. + <string name= "signature_title"> "Optional signature"</string>
  28. + <string name= "signature_text_title"> "SMS signature"</string>
  29. + <string name= "mms_signature_summary"> "Automatically append signature to every MMS message you send"</string>
  30. +</resources>
  31. +
  32. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/generalpreferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/generalpreferences.xml
  33. index 901c106.. 1b64ffa 100755
  34. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/generalpreferences.xml
  35. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/generalpreferences.xml
  36. @@ - 45, 6 + 45, 18 @@
  37. android:persistent= "false">
  38. </Preference>
  39. </PreferenceCategory>
  40. + <PreferenceCategory android:title= "@string/mms_signature_title"
  41. + android:key= "pref_key_mms_signature_settings">
  42. + <CheckBoxPreference android:defaultValue= "true"
  43. + android:key= "pref_key_signature_switch"
  44. + android:summary= "@string/mms_signature_summary"
  45. + android:title= "@string/signature_title" />
  46. + <Preference android:key= "pref_key_signature_text_editor"
  47. + android:title= "@string/signature_text_title"
  48. + android:dependency= "pref_key_signature_switch"
  49. + android:summary= "@string/signature_text_default"
  50. + android:persistent= "false"/>
  51. + </PreferenceCategory>
  52. <PreferenceCategory android:title= "@string/pref_title_wappush_settings"
  53. android:key= "pref_key_wappush_settings">
  54. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsMessageSender.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsMessageSender.java
  55. index b9f396d.. 1633a59 100644
  56. --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsMessageSender.java
  57. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsMessageSender.java
  58. @@ - 51, 7 + 51, 7 @@ public class SmsMessageSender implements MessageSender {
  59. protected final Context mContext;
  60. protected final int mNumberOfDests;
  61. private final String[] mDests;
  62. - protected final String mMessageText;
  63. + protected String mMessageText;
  64. protected final String mServiceCenter;
  65. protected final long mThreadId;
  66. protected int mSubId;
  67. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsSingleRecipientSender.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsSingleRecipientSender.java
  68. index 4aab62f.. 2d60f08 100644
  69. --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsSingleRecipientSender.java
  70. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsSingleRecipientSender.java
  71. @@ - 34, 6 + 34, 10 @@ import com.android.mms.MmsApp;
  72. import com.android.internal.telephony.PhoneConstants;
  73. import com.android.mms.util.PhoneUtils;
  74. import com.android.mms.util.MmsLog;
  75. + import com.mediatek.setting.GeneralPreferenceActivity;
  76. + import android.preference.PreferenceManager;
  77. + import android.content.SharedPreferences;
  78. +
  79. public class SmsSingleRecipientSender extends SmsMessageSender {
  80. @@ - 42, 6 + 46, 7 @@ public class SmsSingleRecipientSender extends SmsMessageSender {
  81. private String mDest;
  82. private Uri mUri;
  83. private static final String TAG = "SmsSingleRecipientSender";
  84. + private Context mContext;
  85. private IOpSmsSingleRecipientSenderExt mOpSmsSenderExt;
  86. @@ - 51, 6 + 56, 7 @@ public class SmsSingleRecipientSender extends SmsMessageSender {
  87. mRequestDeliveryReport = requestDeliveryReport;
  88. mDest = dest;
  89. mUri = uri;
  90. + mContext = context;
  91. mOpSmsSenderExt = OpMessageUtils.getOpMessagePlugin().getOpSmsSingleRecipientSenderExt();
  92. }
  93. @@ - 65, 6 + 71, 15 @@ public class SmsSingleRecipientSender extends SmsMessageSender {
  94. }
  95. /// M:Code analyze 002,add a variable to caculate the length of sms @{
  96. + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mContext);
  97. + StringBuffer addSignature = new StringBuffer(mMessageText);
  98. + if(sp.getBoolean(GeneralPreferenceActivity.SMS_SIGNATURE_SWITCH, true)){
  99. + addSignature.append( "\n\n"+sp.getString(GeneralPreferenceActivity.SMS_SIGNATURE_TEXT, "<这里填写短信签名>"));
  100. + android.util.Log.i( "jiangyanqing", " addSignature : "+addSignature);
  101. + }
  102. + mMessageText = addSignature+ "";
  103. int codingType = SmsMessage.ENCODING_UNKNOWN;
  104. codingType = mOpSmsSenderExt.sendMessagePrepare(mContext, codingType);
  105. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/setting/GeneralPreferenceActivity.java b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/setting/GeneralPreferenceActivity.java
  106. index 4d12a2f.. 8dd0c87 100755
  107. --- a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/setting/GeneralPreferenceActivity.java
  108. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/setting/GeneralPreferenceActivity.java
  109. @@ - 88, 6 + 88, 11 @@ import java.io.OutputStream;
  110. import java.util.ArrayList;
  111. import java.util.HashMap;
  112. import java.util.List;
  113. + import android.widget.EditText;
  114. + import android.graphics.Color;
  115. + import android.content.DialogInterface.OnClickListener;
  116. + import android.content.SharedPreferences.Editor;
  117. +
  118. /**
  119. * With this activity, users can set preferences for MMS and SMS and
  120. @@ -124,6 +129,10 @@ public class GeneralPreferenceActivity extends PreferenceActivity
  121. public static final String WAPPUSH_ENABLED = "pref_key_wappush_enable";
  122. + public static final String SMS_SIGNATURE_SWITCH = "pref_key_signature_switch";
  123. +
  124. + public static final String SMS_SIGNATURE_TEXT = "pref_key_signature_text_editor";
  125. +
  126. private static final String MAX_SMS_PER_THREAD = "MaxSmsMessagesPerThread";
  127. private static final String MAX_MMS_PER_THREAD = "MaxMmsMessagesPerThread";
  128. @@ -143,6 +152,10 @@ public class GeneralPreferenceActivity extends PreferenceActivity
  129. private Preference mChatWallpaperPref;
  130. + private Preference mSmsSignatureTextPref;
  131. +
  132. + private Preference mSmsSignatureSwitch;
  133. +
  134. private Preference mSmsLimitPref;
  135. private Preference mMmsLimitPref;
  136. @@ -294,7 +307,18 @@ public class GeneralPreferenceActivity extends PreferenceActivity
  137. .getOpGeneralPreferenceActivityExt();
  138. mOpGeneralPreferenceActivityExt.setMessagePreferences(
  139. GeneralPreferenceActivity.this, storageCategory);
  140. -
  141. + mSmsSignatureTextPref = (Preference) findPreference(SMS_SIGNATURE_TEXT);
  142. + android.util.Log.i("jiangyanqing", " signature txt :"+sp.getString(SMS_SIGNATURE_TEXT,""));
  143. + if(sp.getString(SMS_SIGNATURE_TEXT,"").equals("")){
  144. + Editor ed = PreferenceManager.getDefaultSharedPreferences(GeneralPreferenceActivity.this).edit();
  145. + ed.putString(SMS_SIGNATURE_TEXT, getString(R.string.signature_text_default));
  146. + ed.commit();
  147. + }
  148. + android.util.Log.i("jiangyanqing", " signature txt 2222:"+sp.getString(SMS_SIGNATURE_TEXT,""));
  149. + mSmsSignatureTextPref.setSummary(sp.getString(SMS_SIGNATURE_TEXT,""));
  150. + mSmsSignatureSwitch = (Preference) findPreference(SMS_SIGNATURE_SWITCH);
  151. mFontSize = (Preference) findPreference(FONT_SIZE_SETTING);
  152. mFontSizeChoices = getResourceArray(R.array.pref_message_font_size_choices);
  153. mFontSizeValues = getResourceArray(R.array.pref_message_font_size_values);
  154. @@ -409,6 +433,37 @@ public class GeneralPreferenceActivity extends PreferenceActivity
  155. showDialog(FONT_SIZE_DIALOG);
  156. } else if (preference == mChatWallpaperPref) {
  157. pickChatWallpaper();
  158. + }else if (preference == mSmsSignatureTextPref){
  159. + final EditText smsSignatureEdit = new EditText(this);
  160. + smsSignatureEdit.setHint(R.string.signature_text_hint);
  161. + smsSignatureEdit.setTextColor(Color.BLACK);
  162. + smsSignatureEdit.computeScroll();
  163. + if (mSmsSignatureTextPref.getSummary().length() > 0) {
  164. + smsSignatureEdit.setText(mSmsSignatureTextPref.getSummary());
  165. + }
  166. + new AlertDialog.Builder(this)
  167. + //.setTitle(R.string.signature_text_title)
  168. + .setTitle(getString(R.string.mms_signature_title))
  169. + .setView(smsSignatureEdit)
  170. + .setPositiveButton(R.string.OK, new OnClickListener() {
  171. + @Override
  172. + public void onClick(DialogInterface dialog, int which) {
  173. + String text = smsSignatureEdit.getText().toString();
  174. + if (text.length() <= 0) {
  175. + text = getResources().getString(R.string.signature_text_default);
  176. + }
  177. + mSmsSignatureTextPref.setSummary(text);
  178. + SharedPreferences.Editor ed = PreferenceManager.getDefaultSharedPreferences(GeneralPreferenceActivity.this).edit();
  179. + ed.putString(SMS_SIGNATURE_TEXT, text);
  180. + ed.commit();
  181. + }
  182. + })
  183. + .setNegativeButton(R.string.Cancel, null)
  184. + .show();
  185. + }else if(preference == mSmsSignatureSwitch){
  186. +
  187. }
  188. return super.onPreferenceTreeClick(preferenceScreen, preference);
  189. }
  190. @@ -425,6 +480,9 @@ public class GeneralPreferenceActivity extends PreferenceActivity
  191. editor.putBoolean(CELL_BROADCAST, false);
  192. /// M: fix bug ALPS00759844, WAPPUSH_ENABLED should be true.
  193. editor.putBoolean(WAPPUSH_ENABLED, true);
  194. + editor.putBoolean(SMS_SIGNATURE_SWITCH,true);
  195. + editor.putString(SMS_SIGNATURE_TEXT,getString(R.string.signature_text_default));
  196. +
  197. editor.putBoolean(WAPPUSH_AUTO_DOWNLOAD, false);
  198. /// M: fix bug ALPS00432361, restore default preferences
  199. /// about GroupMms and ShowEmailAddress @{


二: 第三方app状态栏作成沉浸式的(在 frameworks 下


  1. diff --git a/base/core/java/com/android/internal/policy/PhoneWindow.java b/base/core/java/com/android/internal/policy/PhoneWindow.java
  2. index 0ab5aed..f627612 100644
  3. --- a/base/core/java/com/android/internal/policy/PhoneWindow.java
  4. +++ b/base/core/java/com/android/internal/policy/PhoneWindow.java
  5. @@ - 2966, 7 + 2966, 8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
  6. WindowManager.LayoutParams attrs = getAttributes();
  7. int sysUiVisibility = attrs.systemUiVisibility | getWindowSystemUiVisibility();
  8. - if (!mIsFloating && ActivityManager.isHighEndGfx()) {
  9. + // if (!mIsFloating && ActivityManager.isHighEndGfx()) {
  10. + if (!mIsFloating && (ActivityManager.isHighEndGfx() || SystemProperties.getBoolean( "ro.config.low_ram", true))){
  11. boolean disallowAnimate = !isLaidOut();
  12. disallowAnimate |= ((mLastWindowFlags ^ attrs.flags)
  13. & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) != 0;
  14. @@ - 3879, 7 + 3880, 8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
  15. // Non-floating windows on high end devices must put up decor beneath the system bars and
  16. // therefore must know about visibility changes of those.
  17. - if (!mIsFloating && ActivityManager.isHighEndGfx()) {
  18. + // if (!mIsFloating && ActivityManager.isHighEndGfx()) {
  19. + if (!mIsFloating && (ActivityManager.isHighEndGfx() || SystemProperties.getBoolean( "ro.config.low_ram", true))){
  20. if (!targetPreL && a.getBoolean(
  21. R.styleable.Window_windowDrawsSystemBarBackgrounds,
  22. false)) {


三:相机人脸识别开关(在 vendor/mediatek/proprietary/packages/apps/Camera/res/values/strings.xml 里


  1. <resources xmlns:xliff= "urn:oasis:names:tc:xliff:document:1.2">
  2. <!-- catpure mode -->
  3. <string name= "pref_camera_face_detect_default" translatable= "false">off</string>
  4. </resources>


四: 添加时区

先 frameworks/base/packages/SettingsLib/res/xml/timezones.xml 里找一下有没有你要默认的时区,里面有的可以直接做默认时区,没有的话请下载我资源中的timezones文件并解压,

再在其中搜索你要添加的时区(搜索到的格式必须为.../...的标准时区格式),如果搜索到的话可以添加进timezones.xml,如果没有搜索到的话,证明不能添加时区,如果客户必须要这些时区的话

我们可以把+/-时区时间相同的另一个时区改名为客户要的...以下为patch(右边替换左边)

  1. diff --git a/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java b/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
  2. index 7b5bfb5.. 0520960 100644
  3. --- a/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
  4. +++ b/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
  5. @@ - 118, 7 + 118, 7 @@ public class ZoneGetter {
  6. boolean isLocalZoneId = localZoneIds.contains(olsonId);
  7. boolean preferLongName = isLocalZoneId && !localLongNamesAreAmbiguous;
  8. String displayName = getZoneDisplayName(locale, tz, now, preferLongName);
  9. -
  10. + displayName = displayName.replace( "Dhaka", "Astana").replace( "达卡", "阿斯塔纳").replace( "Дакка", "Астана").replace( "Magadan", "Severo-Kurilsk").replace( "马加丹", "塞维罗-库里尔斯克").replace( "Магадан", "Северо-Курильск").replace( "Vladivostok", "Khabarovsk").replace( "海参崴", "哈巴罗夫斯克").replace( "Владивосток", "Хабаровск");
  11. String gmtOffsetString = getGmtOffsetString(locale, tz, now);
  12. int offsetMillis = tz.getOffset(now.getTime());
  13. Map<String, Object> displayEntry =
如果要做默认时区的话还需注意的是:如果有Google开机向导,那么需要察看默认的时区在Google开机向导中是否存在该时区,如果不存在,那么该时区不能作为默认时区添加

五: 开机点击菜单按钮,桌面与主菜单重叠

在 packages/apps/Launcher3 中让用户第一次点击时停2秒就解决了

  1. diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
  2. index 9366659.. 8b3ea5a 100644
  3. --- a/src/com/android/launcher3/Launcher.java
  4. +++ b/src/com/android/launcher3/Launcher.java
  5. @@ - 255, 7 + 255, 7 @@ public class Launcher extends Activity
  6. public static final int EXIT_SPRINGLOADED_MODE_SHORT_TIMEOUT = 300;
  7. private static final int ON_ACTIVITY_RESULT_ANIMATION_DELAY = 500;
  8. private static final int ACTIVITY_START_DELAY = 1000;
  9. -
  10. + private int mSleep = 0;
  11. private HashMap<Integer, Integer> mItemIdToViewId = new HashMap<Integer, Integer>();
  12. private static final AtomicInteger sNextGeneratedId = new AtomicInteger( 1);
  13. @@ - 2887, 7 + 2887, 19 @@ public class Launcher extends Activity
  14. onClickFolderIcon (v);
  15. }
  16. } else if (v == mAllAppsButton) {
  17. - onClickAllAppsButton(v);
  18. + if(mSleep == 0){
  19. + Handler handler = new Handler();
  20. + handler.postDelayed( new Runnable() {
  21. + @Override
  22. + public void run() {
  23. + mSleep = 1;
  24. + onClickAllAppsButton(mAllAppsButton);
  25. + }
  26. + }, 2000);
  27. + }
  28. + else{
  29. + onClickAllAppsButton(v);
  30. + }
  31. } else if (tag instanceof AppInfo) {
  32. startAppShortcutOrInfoActivity(v);
  33. } else if (tag instanceof LauncherAppWidgetInfo) {

六:设置 > 位置信息  ( frameworks/base/packages/SettingsProvider/res/values/ defaults.xml

  1. <resources>
  2. <string name= "def_location_providers_allowed" translatable= "false"></string>
  3. </resources>
里面填 gps 是打开 network 是高精度,两个都要就用;连接     默认到节电就这样( packages/apps/Settings)

  1. diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java
  2. index 3b71e79.. 3324c4d 100644
  3. --- a/src/com/android/settings/location/LocationSettings.java
  4. +++ b/src/com/android/settings/location/LocationSettings.java
  5. @@ - 385, 7 + 385, 7 @@ public class LocationSettings extends LocationSettingsBase
  6. @ Override
  7. public void onSwitchChanged( Switch switchView, boolean isChecked) {
  8. if (isChecked) {
  9. - setLocationMode(android.provider.Settings.Secure.LOCATION_MODE_HIGH_ACCURACY);
  10. + setLocationMode(android.provider.Settings.Secure.LOCATION_MODE_BATTERY_SAVING);
  11. } else {
  12. setLocationMode(android.provider.Settings.Secure.LOCATION_MODE_OFF);
  13. }



七: 基带版本号和内核版本号(在packages/apps/Settings 下

  1. diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
  2. index e77726a.. 192aa59 100644
  3. --- a/src/com/android/settings/DeviceInfoSettings.java
  4. +++ b/src/com/android/settings/DeviceInfoSettings.java
  5. @@ - 140, 13 + 140, 13 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
  6. getPreferenceScreen (). removePreference (findPreference(KEY_SECURITY_PATCH));
  7. }
  8. - setValueSummary(KEY_BASEBAND_VERSION, "gsm.version.baseband");
  1. //基带版本号
  2. + findPreference(KEY_BASEBAND_VERSION).setSummary( "MOLY.WR8.W1449.MD.WG.MP.V6.P6, \n2016/06/16 19:48");
  3. setStringSummary(KEY_DEVICE_MODEL, Build.MODEL + getMsvSuffix());
  4. setValueSummary(KEY_EQUIPMENT_ID, PROPERTY_EQUIPMENT_ID);
  5. setStringSummary(KEY_DEVICE_MODEL, Build.MODEL);
  6. setStringSummary(KEY_BUILD_NUMBER, Build.DISPLAY);
  7. findPreference(KEY_BUILD_NUMBER).setEnabled( true);
  8. - findPreference(KEY_KERNEL_VERSION).setSummary(getFormattedKernelVersion());
  1. //内核版本号
  2. + findPreference(KEY_KERNEL_VERSION).setSummary( "3.10.72+ \nsonglixin@v106 #1 \nThu Jun 16 20:02:31 CST 2016");
  3. if (!SELinux.isSELinuxEnabled()) {
  4. String status = getResources().getString(R.string.selinux_status_disabled);
  5. diff --git a/src/com/mediatek/settings/deviceinfo/DeviceInfoSettingsExts.java b/src/com/mediatek/settings/deviceinfo/DeviceInfoSettingsExts.java
  6. index 0bcca55.. 234a286 100644
  7. --- a/src/com/mediatek/settings/deviceinfo/DeviceInfoSettingsExts.java
  8. +++ b/src/com/mediatek/settings/deviceinfo/DeviceInfoSettingsExts.java
  9. @@ - 139, 7 + 139, 7 @@ public class DeviceInfoSettingsExts {
  10. baseband = "gsm.version.baseband.2";
  11. }
  12. Log.d(TAG, "baseband = " + baseband);
  13. - setValueSummary(KEY_BASEBAND_VERSION, baseband);
  14. + findPreference(KEY_BASEBAND_VERSION).setSummary( "MOLY.WR8.W1449.MD.WG.MP.V6.P6, \n2016/06/16 19:48");
  15. if (hasExternalModem && !FeatureOption.PURE_AP_USE_EXTERNAL_MODEM) {
  16. String baseband2 = "gsm.version.baseband.2";

八:合入FOTA

除了加入客户提供的fota apk 外,还要在关于手机里面加入无线升级(fota 入口) (在packages/apps/Settings  中

  1. diff --git a/res/xml/device_info_settings.xml b/res/xml/device_info_settings.xml
  2. index b9ac889.. 67c155d 100644
  3. --- a/res/xml/device_info_settings.xml
  4. +++ b/res/xml/device_info_settings.xml
  5. @@ - 37, 8 + 37, 8 @@
  6. <!-- fota start -->
  7. <PreferenceScreen android:key= "adupsfota_software_update"
  8. android:title= "Wireless update">
  9. - <intent android:targetPackage= "com.adups.fota"
  10. - android:targetClass= "com.adups.fota.GoogleOtaClient"/>
  1. //apk包名
  2. + <intent android:targetPackage= "ru.drivepixels.fota"
  1. //apk类名
  2. + android:targetClass= "ru.drivepixels.fota.Fota"/>
  3. </PreferenceScreen>
  4. <!-- fota end -->
  5. <!-- End of Vanzo:tanglei -->
  6. diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
  7. index fbb818b.. 5375b93 100644
  8. --- a/src/com/android/settings/DeviceInfoSettings.java
  9. +++ b/src/com/android/settings/DeviceInfoSettings.java
  10. @@ - 240, 14 + 240, 14 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
  11. /* Vanzo:tanglei on: Sun, 03 Jan 2016 15:57:06 +0800
  12. */
  13. //fota start
  14. - if(!isApkExist(act, "com.adups.fota")){
  15. + if(!isApkExist(act, "ru.drivepixels.fota")){
  16. if(findPreference( "adupsfota_software_update") != null){
  17. getPreferenceScreen().removePreference(findPreference( "adupsfota_software_update"));
  18. }
  19. } else {
  20. Preference preference = findPreference( "adupsfota_software_update");
  21. if (preference != null) {
  22. - preference.setTitle(getAppName(act, "com.adups.fota"));
  23. + preference.setTitle(getAppName(act, "ru.drivepixels.fota"));
  24. }
  25. }
  26. //fota end

九: 暗码

1)工程代码/查看软件版本 (packages/apps/Dialer/res/values/strings_custom.xml)

<resources>
  1. //工程
  2. <string name= "engineer_mode_code">#*# 77250411##*</string>
  1. // 软件版本
  2. <string name= "build_version_code">*#*# 77111269#*#*</string>
  3. </resources>
2)工厂模式( packages/apps/Dialer/res/values/ strings_engineer.xml)
  1. <resources xmlns:xliff= "urn:oasis:names:tc:xliff:document:1.2">
  2. <string name= "engineer_code_factorymode">*# 66*#</string>
  3. </resources>
3) 查PCB版本和查看硬件指令和软件版本和软硬件版本指令(packages/apps/Dialer)
  1. diff --git a/src/com/android/dialer/SpecialCharSequenceMgr.java b/src/com/android/dialer/SpecialCharSequenceMgr.java
  2. index f0d069e..b03efeb 100755
  3. --- a/src/com/android/dialer/SpecialCharSequenceMgr.java
  4. +++ b/src/com/android/dialer/SpecialCharSequenceMgr.java
  5. @@ - 176, 6 + 176, 9 @@ public class SpecialCharSequenceMgr {
  6. if(input.equals(context.getResources().getString(R.string.engineer_mode_code))) {
  7. input= "*#*#3646633#*#*";
  8. }
  1. //硬件指令(外面的是客户提供的里面的是内部的)
  2. + if (input.equals( "*#6666*#")) {
  3. + input = "*#*#9646633#*#*";
  4. + }
  5. // End of Vanzo:yujianpeng
  6. //get rid of the separators so that the string gets parsed correctly
  7. String dialString = PhoneNumberUtils.stripSeparators(input);
  8. @@ - 197, 6 + 200, 7 @@ public class SpecialCharSequenceMgr {
  9. || handlePinEntry(context, dialString)
  10. || handleAdnEntry(context, dialString, textField)
  11. || handleSecretCode(context, dialString)
  12. + || handlePCBVersion(context, dialString)
+   		 || handleExternalBuildNumber(context,dialString)
  1. +                || handleInternalBuildNumber(context,dialString)
  2. /// M: for OP09 6M project @{
  3. || handleVersionCode(context, dialString)
  4. /// @}
  5. @@ - 221, 6 + 225, 18 @@ public class SpecialCharSequenceMgr {
  6. return false;
  7. }
  8. + //PCB版本
  9. + static boolean handlePCBVersion(Context context, String input) {
  10. + if (input.equals( "*#7777*#")) {
  11. + AlertDialog alert = new AlertDialog.Builder(context)
  12. + .setTitle( "PCB")
  1. + .setMessage( "W371_MB_MP1.0_MT6580")
  2. + .setPositiveButton(android.R.string.ok, null).setCancelable( false).create();
  3. + alert.show();
  4. + return true;
  5. + }
  6. + return false;
  7. + }
  1. + // 软硬件版本指令
  2. + static boolean handleExternalBuildNumber(Context context,String input) {
  3. +         if(input.equals( "#*8378#1#")) {
  4. +            String displayId = SystemProperties.get( "ro.build.display.id");
  5. +            String hardwareId = SystemProperties.get( "ro.build.display.hardware.id", "UNKOWN");
  6. +            AlertDialog alert = new AlertDialog.Builder(context)
  7. +                .setTitle(context.getResources().getString(R.string.sw_version_title))
  8. +                .setMessage( "Version de Software\n" + displayId + "\n" + "Version de Hardware\n" +hardwareId)
  9. +                .setPositiveButton(android.R.string.ok, null)
  10. +                .setCancelable( false)
  11. +                .show();
  12. +             return true;
  13. +        }
  14. +         return false;
  15. +    }
  16. + //内部版本指令
  17. +     static boolean handleInternalBuildNumber(Context context,String input) {
  18. +         if(input.equals( "*1111#")) {
  19. +            String innerId = SystemProperties.get( "ro.build.display.inner.id", "UNKOWN");
+	     //这个要在下面的buildinfo.sh中定义
  1. +            String buildtime = SystemProperties.get( "ro.build.date.ymd", "UNKOWN");
  2. +            AlertDialog alert = new AlertDialog.Builder(context)
  3. +                .setTitle(context.getResources().getString(R.string.sw_version_title))
  4. +                .setMessage( "Version de Software\n" + innerId + "_" + buildtime)
  5. +                .setPositiveButton(android.R.string.ok, null)
  6. +                .setCancelable( false)
  7. +                .show();
  8. +             return true;
  9. +        }
  10. +         return false;
  11. +    }

(build/tools/buildinfo.sh)

  1. +diff --git a/tools/buildinfo.sh b/tools/buildinfo.sh
  2. +index 3254ce4.. 25d24b2 100755
  3. +--- a/tools/buildinfo.sh
  4. ++++ b/tools/buildinfo.sh
  5. +@@ - 28, 6 + 28, 7 @@ fi
  6. + echo "ro.build.version.security_patch=$PLATFORM_SECURITY_PATCH"
  7. + echo "ro.build.version.base_os=$PLATFORM_BASE_OS"
  8. + echo "ro.build.date=`date`"
  9. ++echo "ro.build.date.ymd=`date +%Y%m%d`"
  10. + echo "ro.build.date.utc=`date +%s`"
  11. + echo "ro.build.type=$TARGET_BUILD_TYPE"
  12. + echo "ro.build.user=$USER"
(packages/apps/Settings/)硬件版本号
  1. +diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
  2. +index 8c647c8..a752eac 100644
  3. +--- a/res/values-es-rUS/strings.xml
  4. ++++ b/res/values-es-rUS/strings.xml
  5. +@@ - 900, 7 + 900, 8 @@
  6. + <string name= "fcc_equipment_id" msgid= "149114368246356737"> "ID del equipo"</string>
  7. + <string name= "baseband_version" msgid= "1848990160763524801"> "Versión de banda base"</string>
  8. + <string name= "kernel_version" msgid= "9192574954196167602"> "Versión de núcleo"</string>
  9. +- <string name= "build_number" msgid= "3075795840572241758"> "Número de compilación"</string>
  10. ++ <string name= "build_number" msgid= "3075795840572241758"> "Versión de Software"</string>
  11. ++ <string name= "hardware_version" msgid= "3075795840572241758"> "Versión de Hardware"</string>
  12. + <string name= "selinux_status" msgid= "6212165375172061672"> "Estado de SELinux"</string>
  13. + <string name= "device_info_not_available" msgid= "8062521887156825182"> "No disponible"</string>
  14. + <string name= "device_status_activity_title" msgid= "1411201799384697904"> "Estado"</string>
  15. +diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
  16. +index 94e27ea.. 6a19598 100644
  17. +--- a/res/values-zh-rCN/strings.xml
  18. ++++ b/res/values-zh-rCN/strings.xml
  19. +@@ - 900, 7 + 900, 8 @@
  20. + <string name= "fcc_equipment_id" msgid= "149114368246356737"> "设备 ID"</string>
  21. + <string name= "baseband_version" msgid= "1848990160763524801"> "基带版本"</string>
  22. + <string name= "kernel_version" msgid= "9192574954196167602"> "内核版本"</string>
  23. +- <string name= "build_number" msgid= "3075795840572241758"> "版本号"</string>
  24. ++ <string name= "build_number" msgid= "3075795840572241758"> "软件版本号"</string>
  25. ++ <string name= "hardware_version" msgid= "3075795840572241758"> "硬件版本号"</string>
  26. + <string name= "selinux_status" msgid= "6212165375172061672"> "SELinux 状态"</string>
  27. + <string name= "device_info_not_available" msgid= "8062521887156825182"> "不可用"</string>
  28. + <string name= "device_status_activity_title" msgid= "1411201799384697904"> "状态信息"</string>
  29. +diff --git a/res/values/strings.xml b/res/values/strings.xml
  30. +index ad5ca8c.. 33ac7b3 100644
  31. +--- a/res/values/strings.xml
  32. ++++ b/res/values/strings.xml
  33. +@@ - 2148, 7 + 2148, 8 @@
  34. + <!-- About phone screen, setting option name [CHAR LIMIT= 40] -->
  35. + <string name= "kernel_version">Kernel version</string>
  36. + <!-- About phone screen, setting option name [CHAR LIMIT= 40] -->
  37. +- <string name= "build_number">Build number</string>
  38. ++ <string name= "build_number">Build number </string>
  39. ++ <string name= "hardware_version">Hardware version</string>
  40. + <!-- About phone screen, setting option name [CHAR LIMIT= 40] -->
  41. + <string name= "selinux_status">SELinux status</string>
  42. +
  43. +diff --git a/res/xml/device_info_settings.xml b/res/xml/device_info_settings.xml
  44. +index b9ac889..de65506 100644
  45. +--- a/res/xml/device_info_settings.xml
  46. ++++ b/res/xml/device_info_settings.xml
  47. +@@ - 153, 6 + 153, 12 @@ add brand name
  48. + android:title= "@string/build_number"
  49. + android:summary= "@string/device_info_default"/>
  50. +
  51. ++ <!-- Detailed hardware version -->
  52. ++ <Preference android:key= "hardware_version"
  53. ++ style= "?android:preferenceInformationStyle"
  54. ++ android:title= "@string/hardware_version"
  55. ++ android:summary= "@string/device_info_default"/>
  56. ++
  57. + <!-- SELinux status information -->
  58. + <Preference android:key= "selinux_status"
  59. + style= "?android:preferenceInformationStyle"
  60. +diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
  61. +index fbb818b.. 7ff26f5 100644
  62. +--- a/src/com/android/settings/DeviceInfoSettings.java
  63. ++++ b/src/com/android/settings/DeviceInfoSettings.java
  64. +@@ - 80, 6 + 80, 7 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
  65. + private static final String PROPERTY_SELINUX_STATUS = "ro.build.selinux";
  66. + private static final String KEY_KERNEL_VERSION = "kernel_version";
  67. + private static final String KEY_BUILD_NUMBER = "build_number";
  68. ++ private static final String KEY_HARDWARE_VERSION = "hardware_version";
  69. + private static final String KEY_DEVICE_MODEL = "device_model";
  70. + /* Vanzo:tanglei on: Fri, 24 Apr 2015 15:18:32 +0800
  71. + * add brand name
  72. +@@ -148,6 +149,7 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
  73. + setValueSummary(KEY_EQUIPMENT_ID, PROPERTY_EQUIPMENT_ID);
  74. + setStringSummary(KEY_DEVICE_MODEL, Build.MODEL);
  75. + setStringSummary(KEY_BUILD_NUMBER, Build.DISPLAY);
  76. ++ setValueSummary(KEY_HARDWARE_VERSION, "ro.build.display.hardware.id");
  77. + findPreference(KEY_BUILD_NUMBER).setEnabled(true);
  78. + findPreference(KEY_KERNEL_VERSION).setSummary(getFormattedKernelVersion());


十:android键盘 打开俄罗斯语言和英文
packages/inputmethods

  1. diff --git a/LatinIME/java/Android.mk b/LatinIME/java/Android.mk
  2. index 7a4df92..b94dae0 100644
  3. --- a/LatinIME/java/Android.mk
  4. +++ b/LatinIME/java/Android.mk
  5. @@ - 35, 6 + 35, 8 @@ LOCAL_STATIC_JAVA_LIBRARIES := \
  6. +LOCAL_JAVA_LIBRARIES := mediatek-common
  7. +LOCAL_PRIVILEGED_MODULE := true
  8. # Do not compress dictionary files to mmap dict data runtime
  9. LOCAL_AAPT_FLAGS := - 0 .dict
  10. diff --git a/LatinIME/java/AndroidManifest.xml b/LatinIME/java/AndroidManifest.xml
  11. index a1f469e.. 22b4ff0 100644
  12. --- a/LatinIME/java/AndroidManifest.xml
  13. +++ b/LatinIME/java/AndroidManifest.xml
  14. @@ - 34, 6 + 34, 10 @@
  15. <uses-permission android:name= "android.permission.WRITE_EXTERNAL_STORAGE" />
  16. <uses-permission android:name= "android.permission.WRITE_SYNC_SETTINGS" />
  17. <uses-permission android:name= "android.permission.WRITE_USER_DICTIONARY" />
  18. + <uses-permission android:name= "android.permission.WRITE_SETTINGS" />
  19. + <uses-permission android:name= "android.permission.WRITE_SECURE_SETTINGS" />
  20. + <uses-permission android:name= "android.permission.WRITE_SETTINGS" />
  21. + <uses-permission android:name= "android.permission.WRITE_SECURE_SETTINGS" />
  22. <application android:label= "@string/english_ime_name"
  23. android:icon= "@drawable/ic_launcher_keyboard"
  24. @@ - 170, 5 + 174, 10 @@
  25. android:multiprocess= "false"
  26. android:label= "@string/dictionary_provider_name">
  27. </provider>
  28. + <receiver android:name= "LatinImeReceiver" android:enabled= "true">
  29. + <intent-filter>
  30. + <action android:name= "android.intent.action.BOOT_COMPLETED" />
  31. + </intent-filter>
  32. + </receiver>
  33. </application>
  34. </manifest>
  35. diff --git a/LatinIME/java/res/xml/method.xml b/LatinIME/java/res/xml/method.xml
  36. index 19742d4.. 0e3fea2 100644
  37. --- a/LatinIME/java/res/xml/method.xml
  38. +++ b/LatinIME/java/res/xml/method.xml
  39. @@ - 810, 14 + 810, 6 @@
  40. android:imeSubtypeMode= "keyboard"
  41. android:imeSubtypeExtraValue= "KeyboardLayoutSet=bengali,SupportTouchPositionCorrection,EmojiCapable"
  42. />
  43. - <!-- Burmese -->
  44. - <subtype android:icon= "@drawable/ic_ime_switcher_dark"
  45. - android:label= "@string/subtype_generic"
  46. - android:subtypeId= "0x00000003"
  47. - android:imeSubtypeLocale= "my_MM"
  48. - android:imeSubtypeMode= "keyboard"
  49. - android:imeSubtypeExtraValue= "KeyboardLayoutSet=burmese,SupportTouchPositionCorrection,EmojiCapable"
  50. - />
  51. <!-- Urdu -->
  52. <subtype android:icon= "@drawable/ic_ime_switcher_dark"
  53. android:label= "@string/subtype_generic"
  54. diff --git a/LatinIME/java/src/com/android/inputmethod/latin/LatinImeReceiver.java b/LatinIME/java/src/com/android/inputmethod/latin/LatinImeReceiver.java
  55. new file mode 100644
  56. index 0000000..c685ed7
  57. --- /dev/ null
  58. +++ b/LatinIME/java/src/com/android/inputmethod/latin/LatinImeReceiver.java
  59. @@ - 0, 0 + 1, 130 @@
  60. + package com.android.inputmethod.latin;
  61. + import android.content.BroadcastReceiver;
  62. + import android.content.Context;
  63. + import android.content.Intent;
  64. + import android.content.SharedPreferences;
  65. + import android.provider.Settings;
  66. + import android.util.Log;
  67. + import android.view.inputmethod.InputMethodInfo;
  68. + import android.view.inputmethod.InputMethodManager;
  69. + import android.view.inputmethod.InputMethodSubtype;
  70. + import android.text.TextUtils;
  71. + import java.util.Locale;
  72. +
  73. + public class LatinImeReceiver extends BroadcastReceiver {
  74. + private static final String TAG = LatinImeReceiver.class.getSimpleName();
  75. + @Override
  76. + public void onReceive(Context context, Intent intent) {
  77. + // Set the default input language at the system boot completed.
  78. + if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
  79. + SharedPreferences sp = context.getSharedPreferences( "default_input_language_config",
  80. + Context.MODE_PRIVATE);
  81. + boolean hasSet = sp.getBoolean( "has_set", false);
  82. +
  83. + if (!hasSet) {
  84. + setDefaultSubtypes(context);
  85. + sp.edit().putBoolean( "has_set", true).commit();
  86. + }
  87. + }
  88. + }
  89. +
  90. + /**
  91. + * M: Set the default IME subtype.
  92. + */
  93. + private void setDefaultSubtypes(Context context) {
  94. + final String serviceName = "com.android.inputmethod.latin/.LatinIME";
  95. + final String currentPackageName = "com.android.inputmethod.latin";
  96. + final String enable = Settings.Secure.getString(context.getContentResolver(),
  97. + Settings.Secure.ENABLED_INPUT_METHODS);
  98. + final InputMethodManager imm = (InputMethodManager) context.getSystemService(
  99. + Context.INPUT_METHOD_SERVICE);
  100. + final StringBuilder builder = new StringBuilder();
  101. +
  102. + // Get sub type hash code
  103. + for (InputMethodInfo info : imm.getInputMethodList()) {
  104. + if (currentPackageName.equals(info.getPackageName())) {
  105. + for ( int i = 0; i < info.getSubtypeCount(); i++) {
  106. + final InputMethodSubtype subtype = info.getSubtypeAt(i);
  107. + final String locale = subtype.getLocale().toString();
  108. + if (isDefaultLocale(locale)) {
  109. + Log.i(TAG, "default enabled subtype locale = " + locale);
  110. + builder.append( ';');
  111. + builder.append(subtype.hashCode());
  112. + }
  113. + }
  114. +
  115. + break;
  116. + }
  117. + }
  118. +
  119. + // Insert the sub type
  120. + if (builder.length() > 0 && !TextUtils.isEmpty(enable)) {
  121. + final String subtype = builder.toString();
  122. + builder.setLength( 0);
  123. +
  124. + final int index = enable.indexOf(serviceName) + serviceName.length();
  125. + if (enable.length() > index) {
  126. + builder.append(enable.substring( 0, index));
  127. + builder.append(subtype);
  128. + builder.append(enable.substring(index));
  129. + } else if (enable.length() == index) {
  130. + builder.append(enable);
  131. + builder.append(subtype);
  132. + } else {
  133. + return;
  134. + }
  135. + } else {
  136. + Log.w(TAG, "Build Latin IME subtype failed: " + " builder length = " + builder.length()
  137. + + "; enable isEmpty :" + TextUtils.isEmpty(enable));
  138. + return;
  139. + }
  140. +
  141. + // Commit the result
  142. + android.provider.Settings.Secure.putString(context.getContentResolver(),
  143. + android.provider.Settings.Secure.ENABLED_INPUT_METHODS, builder.toString());
  144. +
  145. +
  146. + String lastInputMethodId = Settings.Secure.getString(context
  147. + .getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD);
  148. + Log.w(TAG, "DEFAULT_INPUT_METHOD = " + lastInputMethodId);
  149. + if(lastInputMethodId.equals(serviceName)) {
  150. + Log.w(TAG, "DEFAULT_INPUT_METHOD = com.android.inputmethod.latin/.LatinIME" );
  151. + for (InputMethodInfo info : imm.getInputMethodList()) {
  152. + if (currentPackageName.equals(info.getPackageName())) {
  153. + for ( int i = 0; i < info.getSubtypeCount(); i++) {
  154. + final InputMethodSubtype subtype = info.getSubtypeAt(i);
  155. + String country = Locale.getDefault().toString();
  156. +
  157. + if(country.contains(subtype.getLocale())) {
  158. + Log.w(TAG, "putString " + subtype.hashCode());
  159. + android.provider.Settings.Secure.putInt(context.getContentResolver(),
  160. + android.provider.Settings.Secure.SELECTED_INPUT_METHOD_SUBTYPE, subtype.hashCode());
  161. +
  162. + }
  163. + }
  164. +
  165. + break;
  166. + }
  167. + }
  168. +
  169. + }
  170. + }
  171. +
  172. + /**
  173. + * M: Check if the current locale is default or not.
  174. + */
  175. + private boolean isDefaultLocale (String locale) {
  1. //这里控制打开的
  2. + final String[] locales = { "ru", "en_US"};
  3. + for (String s : locales) {
  4. + if (s.equals(locale)) {
  5. + return true;
  6. + }
  7. + }
  8. +
  9. + return false;
  10. + }
  11. +}

十一: 在电话本里,电话匹配长度是7 位数字(从右向左,7位数字)
(frameworks/base/telephony/java/android/telephony/PhoneNumberUtils.java)

	public static final int VANZO_FEATURE_DEFAULT_PHONENUMBER_MIN_MATCH = 7;
 
 
 

 
 
  1. if (sIsCtaSupport) {
  2. minMatchLen = MIN_MATCH_CTA;
  3. } else if (sPhoneNumberExt != null) {
  4. - minMatchLen = sPhoneNumberExt.getMinMatch();
  5. + minMatchLen = MIN_MATCH;
  6. }
  7. Rlog.d(LOG_TAG, "[compareLoosely] a: " + a + ", b: " + b + ", minMatchLen:" + minMatchLen);
  8. @@ - 905, 7 + 914, 12 @@ public class PhoneNumberUtils
  9. if (sIsCtaSupport) {
  10. minMatchLen = MIN_MATCH_CTA;
  11. } else if (sPhoneNumberExt != null) {
  12. - minMatchLen = sPhoneNumberExt.getMinMatch();
  13. + minMatchLen = MIN_MATCH;
  14. }
  15. String strStrippedReversed = internalGetStrippedReversed(np, minMatchLen);
  16. @@ - 1715, 7 + 1729, 12 @@ public class PhoneNumberUtils
  17. //
  18. // However, in order to loose match 650-555-1212 and 555-1212, we need to set the min match
  19. // to 7.
  20. - static final int MIN_MATCH = 7;
  21. + static final int MIN_MATCH = VANZO_FEATURE_DEFAULT_PHONENUMBER_MIN_MATCH;
  22. /// M: [mtk04070][111116][ALPS00093395]Add a constant integer. @{
  23. static final int MIN_MATCH_CTA = 11;
  24. /// @}

在不过gms的情况下,还要额外加上一段修改(packages/providers)

  1. diff --git a/ContactsProvider/src/com/android/providers/contacts/ContactsDatabaseHelper.java b/ContactsProvider/src/com/android/providers/contacts/ContactsDatabaseHelper.java
  2. index e1d3b77..b3300a4 100644
  3. --- a/ContactsProvider/src/com/android/providers/contacts/ContactsDatabaseHelper.java
  4. +++ b/ContactsProvider/src/com/android/providers/contacts/ContactsDatabaseHelper.java
  5. @@ - 5731, 33 + 5731, 12 @@ public class ContactsDatabaseHelper extends SQLiteOpenHelper {
  6. */
  7. public void buildFallbackPhoneLookupAndContactQuery(SQLiteQueryBuilder qb, String number) {
  8. final String minMatch = PhoneNumberUtils.toCallerIDMinMatch(number);
  9. - final StringBuilder sb = new StringBuilder();
  10. - // Append lookup tables.
  11. - sb.append(Tables.RAW_CONTACTS);
  12. - sb.append( " JOIN " + Views.CONTACTS + " as contacts_view"
  13. - + " ON (contacts_view._id = " + Tables.RAW_CONTACTS
  14. - + "." + RawContacts.CONTACT_ID + ")" +
  15. - " JOIN (SELECT " + PhoneLookupColumns.DATA_ID + "," +
  16. - PhoneLookupColumns.NORMALIZED_NUMBER + " FROM "+ Tables.PHONE_LOOKUP + " "
  17. - + "WHERE (" + Tables.PHONE_LOOKUP + "." + PhoneLookupColumns.MIN_MATCH + " = '");
  18. - sb.append(minMatch);
  19. - sb.append( "')) AS lookup " +
  20. - "ON lookup." + PhoneLookupColumns.DATA_ID + "=" + Tables.DATA + "." + Data._ID
  21. - + " JOIN " + Tables.DATA + " "
  22. - + "ON " + Tables.DATA + "." + Data.RAW_CONTACT_ID + "=" + Tables.RAW_CONTACTS + "."
  23. - + RawContacts._ID);
  24. -
  25. - /**
  26. - * M: append this table for some query(fix ALPS00532279) @{
  27. - */
  28. + StringBuilder sb = new StringBuilder();
  29. + appendPhoneLookupTables(sb, minMatch, true);
  30. appendPresenceAndStautsTable(sb);
  31. - /** @} */
  32. qb.setTables(sb.toString());
  33. -
  34. - sb.setLength( 0);
  35. - sb.append( "PHONE_NUMBERS_EQUAL(" + Tables.DATA + "." + Phone.NUMBER + ", ");
  36. - DatabaseUtils.appendEscapedSQLString(sb, number);
  37. - sb.append(mUseStrictPhoneNumberComparison ? ", 1)" : ", 0)");
  38. + sb = new StringBuilder();
  39. + appendPhoneLookupSelection(sb, null, null);
  40. qb.appendWhere(sb.toString());
  41. }
  42. /** @} */

十二:去除工厂模式中的 光感/距感测试项 vanzo

  1. diff --git a/packages/FactoryMode/src/com/mediatek/factorymode/FactoryMode.java b/packages/FactoryMode/src/com/mediatek/factorymode/FactoryMode.java
  2. index 6100b0e.. 449b5fa 100755
  3. --- a/packages/FactoryMode/src/com/mediatek/factorymode/FactoryMode.java
  4. +++ b/packages/FactoryMode/src/com/mediatek/factorymode/FactoryMode.java
  5. @@ - 56, 7 + 56, 7 @@ public class FactoryMode extends Activity implements OnItemClickListener {
  6. private TextView mMotherBoardResult;
  7. - public static boolean mHavePsensor = true;
  8. + public static boolean mHavePsensor = false;
  9. public static boolean mHaveMsensor = true;

十三: 相机零延迟开关/ 避免闪烁没有默认60HZ

零延迟:vendor/mediatek/proprietary/packages/apps/Camera/res/values/strings.xml
  1. <resources xmlns:xliff= "urn:oasis:names:tc:xliff:document:1.2">
  2. <string name= "pref_camera_zsd_default" translatable= "false">on</string>
  3. </resources>
避免闪烁没有默认60HZ:(vendor)
  1. diff --git a/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml b/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml
  2. index 607f6a0..a01f714 100755
  3. --- a/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml
  4. +++ b/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml
  5. @@ -684,6 +684,7 @@ add 16M 16_9
  6. </string-array>
  7. <!-- Default antibanding setting.-->
  8. <string-array name="pref_camera_antibanding_default_array" translatable="false">
  9. + <item>60hz</item>
  10. <item>auto</item>
  11. <item>off</item>
  12. <item>50hz</item>

十四:WIFI默认关闭 packages/apps/Launcher3
 
 

 
 
  1. diff --git a/AndroidManifest.xml b/AndroidManifest.xml
  2. index df22272.. 8929289 100755
  3. --- a/AndroidManifest.xml
  4. +++ b/AndroidManifest.xml
  5. @@ - 70, 6 + 70, 8 @@
  6. <uses-permission android:name= "com.android.launcher3.permission.RECEIVE_FIRST_LOAD_BROADCAST" />
  7. <!-- M: hide apps activity requires this permission to get package size. -->
  8. <uses-permission android:name= "android.permission.GET_PACKAGE_SIZE"/>
  9. + <uses-permission android:name= "android.permission.CHANGE_WIFI_STATE" />
  10. + <uses-permission android:name= "android.permission.ACCESS_NETWORK_STATE" />
  11. <!-- M: ALSP02141215, android security patch. -->
  12. <uses-permission android:name= "android.permission.GET_TASKS" />
  13. <!-- M: ALSP02241595, add MANAGE_USERS permission. -->
  14. diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
  15. index 9366659.. 7c30d9d 100644
  16. --- a/src/com/android/launcher3/Launcher.java
  17. +++ b/src/com/android/launcher3/Launcher.java
  18. @@ - 146, 6 + 146, 9 @@ import android.hardware.SensorEvent;
  19. import android.hardware.SensorEventListener;
  20. import android.hardware.SensorManager;
  21. import com.android.featureoption.FeatureOption;
  22. + import android.net.NetworkInfo;
  23. + import android.net.wifi.WifiManager;
  24. + import android.net.ConnectivityManager;
  25. // End of Vanzo:hanshengpeng
  26. /**
  27. @@ -5163,6 +5166,18 @@ public class Launcher extends Activity
  28. editor.apply();
  29. }
  30. + private void closeWifiGps() {
  31. + // Intent sh = new Intent("com.android.settings.location.CLOSE");
  32. + //sendBroadcast(sh);
  33. + final WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
  34. + ConnectivityManager con = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
  35. + NetworkInfo netWork = con.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  36. + if (wifiManager == null || netWork.isConnected()) {
  37. + return;
  38. + }
  39. + wifiManager.setWifiEnabled(false);
  40. + }
  41. +
  42. @Thunk void showFirstRunClings() {
  43. // The two first run cling paths are mutually exclusive, if the launcher is preinstalled
  44. // on the device, then we always show the first run cling experience (or if there is no
  45. @@ -5175,6 +5190,7 @@ public class Launcher extends Activity
  46. } else {
  47. launcherClings.showLongPressCling(true);
  48. }
  49. + closeWifiGps();
  50. }
  51. }


十五:壁纸不滑动packages/apps/Launcher3

  1. diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
  2. index e299302.. 5ac7b2b 100755
  3. --- a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
  4. +++ b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
  5. @@ - 1059, 11 + 1059, 15 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
  6. if (partner == null || !partner.hideDefaultWallpaper()) {
  7. // Add an entry for the default wallpaper (stored in system resources)
  8. + /* Vanzo:yujianpeng on: Fri, 01 Apr 2016 15:39:35 +0800
  9. + * TODO: replace this line with your comment
  10. WallpaperTileInfo defaultWallpaperInfo = Utilities.ATLEAST_KITKAT
  11. ? getDefaultWallpaper() : getPreKKDefaultWallpaperInfo();
  12. if (defaultWallpaperInfo != null) {
  13. bundled.add(0, defaultWallpaperInfo);
  14. }
  15. + */
  16. + // End of Vanzo:yujianpeng
  17. }
  18. return bundled;
  19. }

十六:插入SD卡时默认为SD卡packages/apps/Settings

  1. diff --git a/AndroidManifest.xml b/AndroidManifest.xml
  2. index c8b252a..bed2c41 100644
  3. --- a/AndroidManifest.xml
  4. +++ b/AndroidManifest.xml
  5. @@ - 3173, 6 + 3173, 12 @@ add fp control
  6. </intent-filter>
  7. </receiver>
  8. <!-- End of Vanzo:fenghaitao -->
  9. -
  10. + <receiver android:name= ".UsbBroadCastReceiver">
  11. + <intent-filter android:priority= "1000">
  12. + <action android:name= "android.intent.action.MEDIA_MOUNTED"/>
  13. + <action android:name= "android.intent.action.MEDIA_EJECT" />
  14. + <data android:scheme= "file"/>
  15. + </intent-filter>
  16. + </receiver>
  17. </application>
  18. </manifest>
  19. diff --git a/src/com/android/settings/UsbBroadCastReceiver.java b/src/com/android/settings/UsbBroadCastReceiver.java
  20. new file mode 100644
  21. index 0000000..b578167
  22. --- /dev/ null
  23. +++ b/src/com/android/settings/UsbBroadCastReceiver.java
  24. @@ - 0, 0 + 1, 26 @@
  25. + package com.android.settings;
  26. +
  27. + import android.content.BroadcastReceiver;
  28. + import android.content.Context;
  29. + import android.content.Intent;
  30. + import android.provider.Settings;
  31. + import android.util.Log;
  32. + import android.os.storage.IMountService;
  33. + import com.mediatek.storage.StorageManagerEx;
  34. +
  35. + public class UsbBroadCastReceiver extends BroadcastReceiver {
  36. + String TAG = "UsbBroadCastReceiver";
  37. + String ExternalStoragePath = StorageManagerEx.getExternalStoragePath();
  38. +
  39. +
  40. + public void onReceive(Context context, Intent intent) {
  41. +
  42. + Log.i(TAG, "receive change request");
  43. + if (Intent.ACTION_MEDIA_MOUNTED.equals(intent.getAction())) {
  44. + Log.d( "yjp", "intent : ACTION_MEDIA_MOUNTED");
  45. + Log.d( "yjp", "ExternalStoragePath " + ExternalStoragePath + " getInternalStoragePath : " + StorageManagerEx.getInternalStoragePath());
  46. + StorageManagerEx.setDefaultPath(ExternalStoragePath);
  47. + }
  48. + }
  49. +
  50. +}

十七: 邮箱默认签名,默认西班牙语下:Enviado des... 英语和其他语言下:Sent from my LO...(packages/apps/Email)

  1. diff --git a/UnifiedEmail/src/com/android/mail/compose/ComposeActivity.java b/UnifiedEmail/src/com/android/mail/compose/ComposeActivity.java
  2. index d6acdaf..e8bdab6 100755
  3. --- a/UnifiedEmail/src/com/android/mail/compose/ComposeActivity.java
  4. +++ b/UnifiedEmail/src/com/android/mail/compose/ComposeActivity.java
  5. @@ - 78, 6 + 78, 8 @@ import android.widget.ScrollView;
  6. import android.widget.MultiAutoCompleteTextView;
  7. import android.widget.TextView;
  8. import android.widget.Toast;
  9. + import android.preference.EditTextPreference;
  10. + import java.util.Locale;
  11. import com.android.common.Rfc822Validator;
  12. import com.android.common.contacts.DataUsageStatUpdater;
  13. @@ - 1116, 6 + 1118, 15 @@ public class ComposeActivity extends ActionBarActivity
  14. DataCollectUtils. clearRecordedList();
  15. }
  16. /** @} */
  17. + if(mSignature.equals( "Enviado desde mi smartphone LOGIC")){
  18. + if(mBodyView.getText().toString().contains( "Enviado desde mi smartphone LOGIC")){
  19. + if(Locale.getDefault().getLanguage().equals( "es")) {
  20. + mBodyView.setText(mBodyView.getText().toString());
  21. + } else {
  22. + mBodyView.setText(mBodyView.getText().toString());
  23. + }
  24. + }
  25. + }
  26. }
  27. @Override
  28. @@ - 1890, 6 + 1901, 17 @@ public class ComposeActivity extends ActionBarActivity
  29. message. bodyHtml. length());
  30. }
  31. }
  32. + if(mSignature.equals( "Enviado desde mi smartphone LOGIC") || mSignature.equals( "Sent from my LOGIC smartphone.")){
  33. + if(body.equals( "Enviado desde mi smartphone LOGIC") || body.equals( "Sent from my LOGIC smartphone.") ){
  34. + if(Locale.getDefault().getLanguage().equals( "es")){
  35. + mBodyView.setText( "Enviado desde mi smartphone LOGIC");
  36. + } else {
  37. + mBodyView.setText( "Sent from my LOGIC smartphone.");
  38. + }
  39. + }
  40. + } else{
  41. + mBodyView.setText(body);
  42. + }
  43. new HtmlToSpannedTask().execute(body);
  44. } else {
  45. final String body = message.bodyText;
  46. @@ - 4229, 6 + 4251, 15 @@ public class ComposeActivity extends ActionBarActivity
  47. mSignature = newSignature;
  48. if (!TextUtils.isEmpty(mSignature)) {
  49. // Appending a signature does not count as changing text.
  50. + if(mSignature.equals( "Enviado desde mi smartphone LOGIC") || mSignature.equals( "Sent from my LOGIC smartphone.")){
  51. + if(Locale.getDefault().getLanguage().equals( "es")){
  52. + mSignature = "Enviado desde mi smartphone LOGIC";
  53. + } else{
  54. + mSignature = "Sent from my LOGIC smartphone.";
  55. + }
  56. + } else {
  57. + mSignature = newSignature;
  58. + }
  59. mBodyView.removeTextChangedListener( this);
  60. mBodyView.append(convertToPrintableSignature(mSignature));
  61. mBodyView.addTextChangedListener( this);
  62. diff --git a/emailcommon/src/com/android/emailcommon/provider/Account.java b/emailcommon/src/com/android/emailcommon/provider/Account.java
  63. index e3671b3..ce7a184 100755
  64. --- a/emailcommon/src/com/android/emailcommon/provider/Account.java
  65. +++ b/emailcommon/src/com/android/emailcommon/provider/Account.java
  66. @@ - 44, 6 + 44, 7 @@ import org.json.JSONException;
  67. import org.json.JSONObject;
  68. import java.util.ArrayList;
  69. + import java.util.Locale;
  70. public final class Account extends EmailContent implements Parcelable {
  71. public static final String TABLE_NAME = "Account";
  72. @@ - 144, 6 + 145, 7 @@ public final class Account extends EmailContent implements Parcelable {
  73. public String mProtocolVersion;
  74. public String mSecuritySyncKey;
  75. public String mSignature;
  76. + public String CUSTOM_SIGNATURE = "Sent from my LOGIC smartphone.";
  77. public long mPolicyKey;
  78. public long mPingDuration;
  79. @@ - 211, 6 + 213, 13 @@ public final class Account extends EmailContent implements Parcelable {
  80. mSyncInterval = - 1;
  81. mSyncLookback = - 1;
  82. mFlags = 0;
  83. + if(Locale.getDefault().getLanguage().equals( "en")){
  84. + mSignature = "Sent from my LOGIC smartphone.";
  85. + } else if(Locale.getDefault().getLanguage().equals( "es")){
  86. + mSignature = "Enviado desde mi smartphone LOGIC";
  87. + } else{
  88. + mSignature = CUSTOM_SIGNATURE;
  89. + }
  90. }
  91. public static Account restoreAccountWithId(Context context, long id) {
  92. @@ - 285, 7 + 294, 14 @@ public final class Account extends EmailContent implements Parcelable {
  93. mRingtoneUri = cursor.getString(CONTENT_RINGTONE_URI_COLUMN);
  94. mProtocolVersion = cursor.getString(CONTENT_PROTOCOL_VERSION_COLUMN);
  95. mSecuritySyncKey = cursor.getString(CONTENT_SECURITY_SYNC_KEY_COLUMN);
  96. - mSignature = cursor.getString(CONTENT_SIGNATURE_COLUMN);
  97. + //mSignature = cursor.getString(CONTENT_SIGNATURE_COLUMN);
  98. + if(Locale.getDefault().getLanguage().equals( "en")){
  99. + CUSTOM_SIGNATURE = "Sent from my LOGIC smartphone.";
  100. + } else if(Locale.getDefault().getLanguage().equals( "es")){
  101. + CUSTOM_SIGNATURE = "Enviado desde mi smartphone LOGIC";
  102. + } else{
  103. + mSignature = CUSTOM_SIGNATURE;
  104. + }
  105. mPolicyKey = cursor.getLong(CONTENT_POLICY_KEY_COLUMN);
  106. mPingDuration = cursor.getLong(CONTENT_PING_DURATION_COLUMN);
  107. }
  108. @@ - 957, 6 + 973, 13 @@ public final class Account extends EmailContent implements Parcelable {
  109. mProtocolVersion = in.readString();
  110. /* mNewMessageCount = */ in.readInt();
  111. mSecuritySyncKey = in.readString();
  112. + if(Locale.getDefault().getLanguage().equals( "en")){
  113. + CUSTOM_SIGNATURE = "Sent from my LOGIC smartphone.";
  114. + } else if(Locale.getDefault().getLanguage().equals( "es")){
  115. + CUSTOM_SIGNATURE = "Enviado desde mi smartphone LOGIC";
  116. + } else{
  117. + mSignature = CUSTOM_SIGNATURE;
  118. + }
  119. mSignature = in.readString();
  120. mPolicyKey = in.readLong();
  121. diff --git a/src/com/android/email/activity/setup/AccountFinalizeFragment.java b/src/com/android/email/activity/setup/AccountFinalizeFragment.java
  122. index f2b9cde..bdfecf9 100755
  123. --- a/src/com/android/email/activity/setup/AccountFinalizeFragment.java
  124. +++ b/src/com/android/email/activity/setup/AccountFinalizeFragment.java
  125. @@ - 127, 13 + 127, 6 @@ public class AccountFinalizeFragment extends Fragment {
  126. public Boolean loadInBackground() {
  127. // Update the account in the database
  128. final ContentValues cv = new ContentValues();
  129. - /* Vanzo:tanglei on: Mon, 09 Feb 2015 20:34:31 +0800
  130. - * email default signature
  131. - */
  132. - if (!FeatureOption.VANZO_FEATURE_EMAIL_DEFAULT_SIGNATURE.equals( "")) {
  133. - cv.put(EmailContent.AccountColumns.SIGNATURE, FeatureOption.VANZO_FEATURE_EMAIL_DEFAULT_SIGNATURE);
  134. - }
  135. - // End of Vanzo:tanglei
  136. cv.put(EmailContent.AccountColumns.DISPLAY_NAME, mAccount.getDisplayName());
  137. cv.put(EmailContent.AccountColumns.SENDER_NAME, mAccount.getSenderName());
  138. mAccount.update(getContext(), cv);

十八: 在短信设置里:有(100K, 200K, 300K, 600K, 1M)选项可以选择

短信默认最大160个字节,超过部分作为第二个短信,默认编辑方式:7 Bits

vendor

  1. diff --git a/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xml b/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xml
  2. index da3f0dc..eef0535 100755
  3. --- a/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xml
  4. +++ b/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xml
  5. @@ - 44, 11 + 44, 15 @@
  6. <item> 100K</item>
  7. <item> 200K</item>
  8. <item> 300K</item>
  9. + <item> 600K</item>
  10. + <item> 1MB</item>
  11. </string-array>
  12. <string-array name= "pref_mms_size_limit_values" translatable= "false">
  13. <item> 100</item>
  14. <item> 200</item>
  15. <item> 300</item>
  16. + <item> 600</item>
  17. + <item> 1024</item>
  18. </string-array>
  19. <string-array name= "pref_key_mms_priority_choices">
  20. <item>High</item>
  21. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/mms_config.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/mms_config.xml
  22. index 3e87525.. 76aa9e6 100644
  23. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/mms_config.xml
  24. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/mms_config.xml
  25. @@ - 26, 7 + 26, 7 @@
  26. <bool name= "enabledMMS"> true</bool>
  27. <!-- Maximum message size in bytes for a MMS message -->
  28. - < int name= "maxMessageSize"> 307200</ int>
  29. + < int name= "maxMessageSize"> 1048576</ int>
  30. <!-- Maximum height for an attached image -->
  31. < int name= "maxImageHeight"> 480</ int>
  32. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/multicardpreferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/multicardpreferences.xml
  33. index 70a9ebe..d47b8e4 100755
  34. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/multicardpreferences.xml
  35. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/multicardpreferences.xml
  36. @@ - 76, 7 + 76, 7 @@
  37. <ListPreference
  38. android:key= "pref_key_sms_input_mode"
  39. android:title= "@string/sms_input_mode_title"
  40. - android:defaultValue= "Automatic"
  41. + android:defaultValue= "GSM alphabet"
  42. android:entries= "@array/pref_sms_input_mode_choice"
  43. android:entryValues= "@array/pref_sms_input_mode_values"
  44. android:dialogTitle= "@string/sms_input_mode_dialog_title"
  45. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/preferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/preferences.xml
  46. index 0017a83.. 5c8a7b9 100644
  47. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/preferences.xml
  48. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/preferences.xml
  49. @@ - 76, 7 + 76, 7 @@
  50. <ListPreference
  51. android:key= "pref_key_sms_input_mode"
  52. android:title= "@string/sms_input_mode_title"
  53. - android:defaultValue= "Automatic"
  54. + android:defaultValue= "GSM alphabet"
  55. android:entries= "@array/pref_sms_input_mode_choice"
  56. android:entryValues= "@array/pref_sms_input_mode_values"
  57. android:dialogTitle= "@string/sms_input_mode_dialog_title"
  58. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/smsmulticardpreferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/smsmulticardpreferences.xml
  59. index c083bc3.. 5c84396 100755
  60. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/smsmulticardpreferences.xml
  61. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/smsmulticardpreferences.xml
  62. @@ - 30, 7 + 30, 7 @@
  63. android:entryValues= "@array/pref_sms_save_location_values"
  64. android:dialogTitle= "@string/sms_save_location" android:summary= "@string/sms_save_location" />
  65. <ListPreference android:key= "pref_key_sms_input_mode"
  66. - android:title= "@string/sms_input_mode_title" android:defaultValue= "Automatic"
  67. + android:title= "@string/sms_input_mode_title" android:defaultValue= "GSM alphabet"
  68. android:entries= "@array/pref_sms_input_mode_choice"
  69. android:entryValues= "@array/pref_sms_input_mode_values"
  70. android:dialogTitle= "@string/sms_input_mode_dialog_title"
  71. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/smspreferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/smspreferences.xml
  72. index 730ff0f..d479da8 100755
  73. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/smspreferences.xml
  74. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/smspreferences.xml
  75. @@ - 30, 7 + 30, 7 @@
  76. android:entryValues= "@array/pref_sms_save_location_values"
  77. android:dialogTitle= "@string/sms_save_location" android:summary= "@string/sms_save_location" />
  78. <ListPreference android:key= "pref_key_sms_input_mode"
  79. - android:title= "@string/sms_input_mode_title" android:defaultValue= "Automatic"
  80. + android:title= "@string/sms_input_mode_title" android:defaultValue= "GSM alphabet"
  81. android:entries= "@array/pref_sms_input_mode_choice"
  82. android:entryValues= "@array/pref_sms_input_mode_values"
  83. android:dialogTitle= "@string/sms_input_mode_dialog_title"
  84. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/MmsConfig.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/MmsConfig.java
  85. index 5142ff5..fc7b4de 100755
  86. --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/MmsConfig.java
  87. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/MmsConfig.java
  88. @@ - 95, 7 + 95, 7 @@ public class MmsConfig {
  89. */
  90. private static boolean mTransIdEnabled = false;
  91. private static int mMmsEnabled = 1; // default to true
  92. - private static int mMaxMessageSize = 300 * 1024; // default to 300k max size
  93. + private static int mMaxMessageSize = 1 * 1024 * 1024; // default to 300k max size
  94. private static String mUserAgent = DEFAULT_USER_AGENT;
  95. private static String mUaProfTagName = DEFAULT_HTTP_KEY_X_WAP_PROFILE;
  96. private static String mUaProfUrl = null;
  97. @@ - 562, 10 + 562, 9 @@ public class MmsConfig {
  98. }
  99. /// APARTODO
  100. - // public static boolean getSIMSmsAtSettingEnabled() {
  101. - // return mMmsFeatureManagerPlugin.isFeatureEnabled(
  102. - // IMmsFeatureManagerExt.SHOW_SIM_SMS_ENTRY_IN_SETTINGS);
  103. - // }
  104. + public static boolean getSIMSmsAtSettingEnabled() {
  105. + return true;
  106. + }
  107. public static int getPluginMenuIDBase() {
  108. return 0x100;
  109. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java
  110. index 872e3b3.. 64c0399 100644
  111. --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java
  112. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java
  113. @@ - 1049, 8 + 1049, 11 @@ public class ComposeMessageActivity extends Activity
  114. int encodingType = SmsMessage.ENCODING_UNKNOWN;
  115. encodingType = mOpComposeExt.getSmsEncodingType(encodingType, ComposeMessageActivity. this);
  116. -
  117. - params = SmsMessage.calculateLength(text, false, encodingType);
  118. + if (encodingType == 1) {
  119. + params = SmsMessage.calculateLength(text, true, encodingType);
  120. + } else {
  121. + params = SmsMessage.calculateLength(text, false, encodingType);
  122. + }
  123. /* SmsMessage.calculateLength returns an int[4] with:
  124. * int[0] being the number of SMS's required,
  125. * int[1] the number of code units used,
  126. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/MessageUtils.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/MessageUtils.java
  127. index 91f4ed0..15882f3 100644
  128. --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/MessageUtils.java
  129. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/MessageUtils.java
  130. @@ -3101,6 +3101,10 @@ public class MessageUtils {
  131. mMmsSizeLimit = 100;
  132. } else if (mSizeLimitTemp != null && 0 == mSizeLimitTemp.compareTo("200")) {
  133. mMmsSizeLimit = 200;
  134. + }else if (mSizeLimitTemp != null && 0 == mSizeLimitTemp.compareTo("600")) {
  135. + mMmsSizeLimit = 600;
  136. + } else if (mSizeLimitTemp != null && 0 == mSizeLimitTemp.compareTo("1024")) {
  137. + mMmsSizeLimit = 1024;
  138. } else {
  139. mMmsSizeLimit = 300;
  140. }

十九:更改时间格式 frameworks
  1. +++ b/base/api/system-current.txt
  2. @@ - 34813, 6 + 34813, 7 @@ package android.text.format {
  3. method public static java.lang. CharSequence format(java.lang.CharSequence, java.util.Calendar);
  4. method public static java.lang. String getBestDateTimePattern(java.util.Locale, java.lang.String);
  5. method public static java.text. DateFormat getDateFormat(android.content.Context);
  6. + method public static java.text. DateFormat getDateFormatForSetting(android.content.Context, java.lang.String);
  7. method public static char[] getDateFormatOrder(android.content.Context);
  8. method public static java.text. DateFormat getLongDateFormat(android.content.Context);
  9. method public static java.text. DateFormat getMediumDateFormat(android.content.Context);
  10. diff --git a/base/core/java/android/text/format/DateFormat.java b/base/core/java/android/text/format/DateFormat.java
  11. index 8d5555d.. 1555939 100755
  12. --- a/base/core/java/android/text/format/DateFormat.java
  13. +++ b/base/core/java/android/text/format/DateFormat.java
  14. @@ - 292, 7 + 292, 14 @@ public class DateFormat {
  15. * @return the { @link java.text.DateFormat} object that properly formats the date.
  16. */
  17. public static java.text. DateFormat getDateFormat(Context context) {
  18. + /* Vanzo:yujianpeng on: Sat, 02 Apr 2016 11:22:51 +0800
  19. + * add choose date format
  20. return java.text.DateFormat.getDateInstance(java.text.DateFormat.SHORT);
  21. + */
  22. + String value = Settings.System.getString(context.getContentResolver(),
  23. + Settings.System.DATE_FORMAT);
  24. + return getDateFormatForSetting(context, value);
  25. + // End of Vanzo:yujianpeng
  26. }
  27. /**
  28. @@ -325,9 +332,16 @@ public class DateFormat {
  29. * order returned here.
  30. */
  31. public static char[] getDateFormatOrder(Context context) {
  32. + /* Vanzo:yujianpeng on: Sat, 02 Apr 2016 11:27:55 +0800
  33. + * add choose date format
  34. return ICU.getDateFormatOrder(getDateFormatString());
  35. + */
  36. + return ICU.getDateFormatOrder(getDateFormatString(context));
  37. + // End of Vanzo:yujianpeng
  38. }
  39. + /* Vanzo:yujianpeng on: Sat, 02 Apr 2016 11:28:07 +0800
  40. + * add choose date format
  41. private static String getDateFormatString() {
  42. java.text.DateFormat df = java.text.DateFormat.getDateInstance(java.text.DateFormat.SHORT);
  43. if (df instanceof SimpleDateFormat) {
  44. @@ -336,6 +350,13 @@ public class DateFormat {
  45. throw new AssertionError("!(df instanceof SimpleDateFormat)");
  46. }
  47. + */
  48. + private static String getDateFormatString(Context context) {
  49. + String value = Settings.System.getString(context.getContentResolver(),
  50. + Settings.System.DATE_FORMAT);
  51. + return getDateFormatStringForSetting(context, value);
  52. + }
  53. + // End of Vanzo:yujianpeng
  54. /**
  55. * Given a format string and a time in milliseconds since Jan 1, 1970 GMT, returns a
  56. @@ -636,4 +657,116 @@ public class DateFormat {
  57. private static String zeroPad(int inValue, int inMinDigits) {
  58. return String.format(Locale.getDefault(), "%0" + inMinDigits + "d", inValue);
  59. }
  60. +/* Vanzo:yujianpeng on: Sat, 02 Apr 2016 11:13:06 +0800
  61. + * TODO: replace this line with your comment
  62. + */
  63. +
  64. + public static java.text. DateFormat getDateFormatForSetting(Context context, String value) {
  65. + String format = getDateFormatStringForSetting(context, value);
  66. + return new java.text.SimpleDateFormat(format);
  67. + }
  68. +
  69. + private static String getDateFormatStringForSetting(Context context, String value) {
  70. + String result = null;
  71. + if (value != null) {
  72. + /// M: add week and arrange month day year according to resource's date format defination for settings. CR: ALPS00049014 @{
  73. + String dayValue = value.indexOf( "dd") < 0 ? "d" : "dd";
  74. + String monthValue = value.indexOf( "MMMM") < 0 ? (value.indexOf( "MMM") < 0 ? (value.indexOf( "MM") < 0 ? "M" : "MM") : "MMM") : "MMMM";
  75. + String yearValue = value.indexOf( "yyyy") < 0 ? "y" : "yyyy";
  76. + String weekValue = value.indexOf( "EEEE") < 0 ? "E" : "EEEE";
  77. +
  78. + int day = value.indexOf(dayValue);
  79. + int month = value.indexOf(monthValue);
  80. + int year = value.indexOf(yearValue);
  81. + int week = value.indexOf(weekValue);
  82. +
  83. + if (week >= 0 && month >= 0 && day >= 0 && year >= 0) {
  84. + String template = null;
  85. + if (week < day) {
  86. + if (year < month && year < day) {
  87. + if (month < day) {
  88. + template = context.getString(com.mediatek.internal.R.string.wday_year_month_day);
  89. + result = String.format(template, weekValue, yearValue, monthValue, dayValue);
  90. + } else {
  91. + template = context.getString(com.mediatek.internal.R.string.wday_year_day_month);
  92. + result = String.format(template, weekValue, yearValue, dayValue, monthValue);
  93. + }
  94. + } else if (month < day) {
  95. + if (day < year) {
  96. + template = context.getString(com.mediatek.internal.R.string.wday_month_day_year);
  97. + result = String.format(template, weekValue, monthValue, dayValue, yearValue);
  98. + } else {
  99. + template = context.getString(com.mediatek.internal.R.string.wday_month_year_day);
  100. + result = String.format(template, weekValue, monthValue, yearValue, dayValue);
  101. + }
  102. + } else {
  103. + if (month < year) {
  104. + template = context.getString(com.mediatek.internal.R.string.wday_day_month_year);
  105. + result = String.format(template, weekValue, dayValue, monthValue, yearValue);
  106. + } else {
  107. + template = context.getString(com.mediatek.internal.R.string.wday_day_year_month);
  108. + result = String.format(template, weekValue, dayValue, yearValue, monthValue);
  109. + }
  110. + }
  111. + } else {
  112. + if (year < month && year < day) {
  113. + if (month < day) {
  114. + template = context.getString(com.mediatek.internal.R.string.year_month_day_wday);
  115. + result = String.format(template, yearValue, monthValue, dayValue, weekValue);
  116. + } else {
  117. + template = context.getString(com.mediatek.internal.R.string.year_day_month_wday);
  118. + result = String.format(template, yearValue, dayValue, monthValue, weekValue);
  119. + }
  120. + } else if (month < day) {
  121. + if (day < year) {
  122. + template = context.getString(com.mediatek.internal.R.string.month_day_year_wday);
  123. + result = String.format(template, monthValue, dayValue, yearValue, weekValue);
  124. + } else {
  125. + template = context.getString(com.mediatek.internal.R.string.month_year_day_wday);
  126. + result = String.format(template, monthValue, yearValue, dayValue, weekValue);
  127. + }
  128. + } else {
  129. + if (month < year) {
  130. + template = context.getString(com.mediatek.internal.R.string.day_month_year_wday);
  131. + result = String.format(template, dayValue, monthValue, yearValue, weekValue);
  132. + } else {
  133. + template = context.getString(com.mediatek.internal.R.string.day_year_month_wday);
  134. + result = String.format(template, dayValue, yearValue, monthValue, weekValue);
  135. + }
  136. + }
  137. + }
  138. +
  139. + return result;
  140. + /// M: @}
  141. + } else if (month >= 0 && day >= 0 && year >= 0) {
  142. + String template = context.getString(com.android.internal.R.string.numeric_date_template);
  143. + if (year < month && year < day) {
  144. + if (month < day) {
  145. + result = String.format(template, yearValue, monthValue, dayValue);
  146. + } else {
  147. + result = String.format(template, yearValue, dayValue, monthValue);
  148. + }
  149. + } else if (month < day) {
  150. + if (day < year) {
  151. + result = String.format(template, monthValue, dayValue, yearValue);
  152. + } else { // unlikely
  153. + result = String.format(template, monthValue, yearValue, dayValue);
  154. + }
  155. + } else { // date < month
  156. + if (month < year) {
  157. + result = String.format(template, dayValue, monthValue, yearValue);
  158. + } else { // unlikely
  159. + result = String.format(template, dayValue, yearValue, monthValue);
  160. + }
  161. + }
  162. +
  163. + return result;
  164. + }
  165. + }
  166. +
  167. + // The setting is not set; use the locale's default.
  168. + LocaleData d = LocaleData.get(context.getResources().getConfiguration().locale);
  169. + return d.shortDateFormat4;
  170. + }
  171. + // End of Vanzo:yujianpeng
  172. }
  173. diff --git a/base/core/res/res/values/donottranslate-cldr.xml b/base/core/res/res/values/donottranslate-cldr.xml
  174. index a8e2b2b.. 80db6e4 100755
  175. --- a/base/core/res/res/values/donottranslate-cldr.xml
  176. +++ b/base/core/res/res/values/donottranslate-cldr.xml
  177. @@ - 1, 6 + 1, 7 @@
  178. <?xml version= "1.0" encoding= "UTF-8"?>
  179. <resources xmlns:android= "http://schemas.android.com/apk/res/android"
  180. xmlns:xliff= "urn:oasis:names:tc:xliff:document:1.2">
  181. + <string name= "numeric_date_template"> "%s/%s/%s"</string>
  182. <string name= "month_day_year">%B %-e, %Y</string>
  183. <string name= "time_of_day">%-l:%M:%S %p</string>
  184. <string name= "date_and_time">%b %-e, %Y, %-l:%M:%S %p</string>
  185. diff --git a/base/core/res/res/values/symbols.xml b/base/core/res/res/values/symbols.xml
  186. index e9faf09.. 50a869a 100644
  187. --- a/base/core/res/res/values/symbols.xml
  188. +++ b/base/core/res/res/values/symbols.xml
  189. @@ - 2325, 7 + 2325, 7 @@
  190. <java-symbol type= "string" name= "global_action_reboot" />
  191. <java-symbol type= "string" name= "reboot_confirm_question" />
  192. <java-symbol type= "string" name= "reboot_confirm" />
  193. -
  194. + <java-symbol type= "string" name= "numeric_date_template" />
  195. <!-- Vanzo:tanglei on: Wed, 21 Jan 2015 11: 47: 03 + 0800
  196. -->
  197. <!-- For Smart Wake -->
  198. diff --git a/base/packages/Keyguard/res/values/strings_custom.xml b/base/packages/Keyguard/res/values/strings_custom.xml
  199. new file mode 100755
  200. index 0000000..c688ae5
  201. --- /dev/ null
  202. +++ b/base/packages/Keyguard/res/values/strings_custom.xml
  203. @@ - 0, 0 + 1, 4 @@
  204. +<?xml version= "1.0" encoding= "utf-8"?>
  205. +<resources xmlns:xliff= "urn:oasis:names:tc:xliff:document:1.2">
  206. + <string name= "default_date_format"><xliff:g id= "default_date_format">dd-MM-yyyy</xliff:g></string>
  207. +</resources>
  208. diff --git a/base/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java b/base/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java
  209. index 86244b8.. 6c22fea 100644
  210. --- a/base/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java
  211. +++ b/base/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java
  212. @@ - 35, 6 + 35, 12 @@ import android.widget.GridLayout;
  213. import android.widget.LinearLayout;
  214. import android.widget.TextClock;
  215. import android.widget.TextView;
  216. + /* Vanzo:yujianpeng on: Fri, 01 Apr 2016 21:54:21 +0800
  217. + * add choose date format
  218. + */
  219. + import android.provider.Settings;
  220. + import libcore.icu.LocaleData;
  221. + // End of Vanzo:yujianpeng
  222. import com.android.internal.widget.LockPatternUtils;
  223. @@ - 165, 8 + 171, 17 @@ public class KeyguardStatusView extends GridLayout {
  224. }
  225. public void refreshTime() {
  226. + /* Vanzo:yujianpeng on: Fri, 01 Apr 2016 21:55:48 +0800
  227. + * add choose date format
  228. mDateView.setFormat24Hour(Patterns.dateView);
  229. mDateView.setFormat12Hour(Patterns.dateView);
  230. + */
  231. + String dateFormat = getCustomDateFormatString(mContext);
  232. + if (dateFormat == null || "".equals(dateFormat))
  233. + dateFormat = getResources().getString(R.string.default_date_format);
  234. + mDateView.setFormat24Hour(dateFormat);
  235. + mDateView.setFormat12Hour(dateFormat);
  236. + // End of Vanzo:yujianpeng
  237. if (bA1Support) {
  238. mClockView.setFormat12Hour(Patterns.clockView12);
  239. @@ - 286, 4 + 301, 118 @@ public class KeyguardStatusView extends GridLayout {
  240. cacheKey = key;
  241. }
  242. }
  243. +
  244. + /* Vanzo:hanshengpeng on: Fri, 24 Jul 2015 15:57:35 +0800
  245. + * add choose date format
  246. + * this part was ported from 82lp
  247. +*/
  248. + private String getCustomDateFormatString(Context context) {
  249. + String value = Settings.System.getString(context.getContentResolver(),
  250. + Settings.System.DATE_FORMAT);
  251. + return getDateFormatStringForSetting(context, value);
  252. + }
  253. +
  254. + private String getDateFormatStringForSetting(Context context, String value) {
  255. + String result = null;
  256. + if (value != null) {
  257. + /// M: add week and arrange month day year according to resource's date format defination for settings. CR: ALPS00049014 @{
  258. + String dayValue = value.indexOf( "dd") < 0 ? "d" : "dd";
  259. + String monthValue = value.indexOf( "MMMM") < 0 ? (value.indexOf( "MMM") < 0 ? (value.indexOf( "MM") < 0 ? "M" : "MM") : "MMM") : "MMMM";
  260. + String yearValue = value.indexOf( "yyyy") < 0 ? "y" : "yyyy";
  261. + String weekValue = value.indexOf( "EEEE") < 0 ? "E" : "EEEE";
  262. +
  263. + int day = value.indexOf(dayValue);
  264. + int month = value.indexOf(monthValue);
  265. + int year = value.indexOf(yearValue);
  266. + int week = value.indexOf(weekValue);
  267. +
  268. + if (week >= 0 && month >= 0 && day >= 0 && year >= 0) {
  269. + String template = null;
  270. + if (week < day) {
  271. + if (year < month && year < day) {
  272. + if (month < day) {
  273. + template = context.getString(com.mediatek.internal.R.string.wday_year_month_day);
  274. + result = String.format(template, weekValue, yearValue, monthValue, dayValue);
  275. + } else {
  276. + template = context.getString(com.mediatek.internal.R.string.wday_year_day_month);
  277. + result = String.format(template, weekValue, yearValue, dayValue, monthValue);
  278. + }
  279. + } else if (month < day) {
  280. + if (day < year) {
  281. + template = context.getString(com.mediatek.internal.R.string.wday_month_day_year);
  282. + result = String.format(template, weekValue, monthValue, dayValue, yearValue);
  283. + } else {
  284. + template = context.getString(com.mediatek.internal.R.string.wday_month_year_day);
  285. + result = String.format(template, weekValue, monthValue, yearValue, dayValue);
  286. + }
  287. + } else {
  288. + if (month < year) {
  289. + template = context.getString(com.mediatek.internal.R.string.wday_day_month_year);
  290. + result = String.format(template, weekValue, dayValue, monthValue, yearValue);
  291. + } else {
  292. + template = context.getString(com.mediatek.internal.R.string.wday_day_year_month);
  293. + result = String.format(template, weekValue, dayValue, yearValue, monthValue);
  294. + }
  295. + }
  296. + } else {
  297. + if (year < month && year < day) {
  298. + if (month < day) {
  299. + template = context.getString(com.mediatek.internal.R.string.year_month_day_wday);
  300. + result = String.format(template, yearValue, monthValue, dayValue, weekValue);
  301. + } else {
  302. + template = context.getString(com.mediatek.internal.R.string.year_day_month_wday);
  303. + result = String.format(template, yearValue, dayValue, monthValue, weekValue);
  304. + }
  305. + } else if (month < day) {
  306. + if (day < year) {
  307. + template = context.getString(com.mediatek.internal.R.string.wday_month_day_year);
  308. + result = String.format(template, weekValue, monthValue, dayValue, yearValue);
  309. + } else {
  310. + template = context.getString(com.mediatek.internal.R.string.wday_month_year_day);
  311. + result = String.format(template, weekValue, monthValue, yearValue, dayValue);
  312. + }
  313. + } else {
  314. + if (month < year) {
  315. + template = context.getString(com.mediatek.internal.R.string.wday_day_month_year);
  316. + result = String.format(template, weekValue, dayValue, monthValue, yearValue);
  317. + } else {
  318. + template = context.getString(com.mediatek.internal.R.string.wday_day_year_month);
  319. + result = String.format(template, weekValue, dayValue, yearValue, monthValue);
  320. + }
  321. + }
  322. + }
  323. +
  324. + return result;
  325. + /// M: @}
  326. + } else if (month >= 0 && day >= 0 && year >= 0) {
  327. + String template = context.getString(com.android.internal.R.string.numeric_date_template);
  328. + if (year < month && year < day) {
  329. + if (month < day) {
  330. + result = String.format(template, yearValue, monthValue, dayValue);
  331. + } else {
  332. + result = String.format(template, yearValue, dayValue, monthValue);
  333. + }
  334. + } else if (month < day) {
  335. + if (day < year) {
  336. + result = String.format(template, monthValue, dayValue, yearValue);
  337. + } else { // unlikely
  338. + result = String.format(template, monthValue, yearValue, dayValue);
  339. + }
  340. + } else { // date < month
  341. + if (month < year) {
  342. + result = String.format(template, dayValue, monthValue, yearValue);
  343. + } else { // unlikely
  344. + result = String.format(template, dayValue, yearValue, monthValue);
  345. + }
  346. + }
  347. +
  348. + return result;
  349. + }
  350. + }
  351. +
  352. + // The setting is not set; use the locale's default.
  353. + LocaleData d = LocaleData.get(context.getResources().getConfiguration().locale);
  354. + return d.shortDateFormat4;
  355. + }
  356. + // End of Vanzo:hanshengpeng
  357. }
  358. diff --git a/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java b/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java
  359. index 186005c..d9eaabc 100644
  360. --- a/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java
  361. +++ b/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/DateView.java
  362. @@ - 31, 6 + 31, 11 @@ import java.text.SimpleDateFormat;
  363. import java.util.Date;
  364. import java.util.Locale;
  365. + /* Vanzo:songlixin on: Fri, 25 Apr 2014 15:50:51 +0800
  366. + */
  367. + import java.util.Calendar;
  368. + import android.text.format.DateFormat;
  369. + // End of Vanzo:songlixin
  370. public class DateView extends TextView {
  371. private static final String TAG = "DateView";
  372. @@ - 98, 6 + 103, 8 @@ public class DateView extends TextView {
  373. }
  374. protected void updateClock() {
  375. + /* Vanzo:hanshengpeng on: Fri, 01 Nov 2013 14:56:08 +0800
  376. + * porting jb2->kk #53983
  377. if (mDateFormat == null) {
  378. final Locale l = Locale.getDefault();
  379. final String fmt = DateFormat.getBestDateTimePattern(l, mDatePattern);
  380. @@ -111,5 +118,10 @@ public class DateView extends TextView {
  381. setText(text);
  382. mLastText = text;
  383. }
  384. + */
  385. + java.text.DateFormat shortDateFormat = DateFormat.getDateFormat(mContext);
  386. + final Calendar now = Calendar.getInstance();
  387. + setText(shortDateFormat.format(now.getTime()));
  388. + // End of Vanzo:hanshengpeng
  389. }
  390. }
(packages/apps/Settings)
  1. diff --git a/res/xml/date_time_prefs.xml b/res/xml/date_time_prefs.xml
  2. index 39d8743..f169374 100644
  3. --- a/res/xml/date_time_prefs.xml
  4. +++ b/res/xml/date_time_prefs.xml
  5. @@ - 53, 4 + 53, 12 @@
  6. android:title= "@string/date_time_24hour"
  7. />
  8. +<!-- Vanzo:zhangsu on: Sat, 25 Jul 2015 18: 17: 42 + 0800
  9. +add date format
  10. +-->
  11. + <ListPreference
  12. + android:key= "date_format"
  13. + android:title= "@string/date_time_date_format"
  14. + android:summary= "dd/MM/yyyy"/>
  15. +<!-- End of Vanzo: zhangsu -->
  16. </PreferenceScreen>
  17. diff --git a/src/com/android/settings/DateTimeSettings.java b/src/com/android/settings/DateTimeSettings.java
  18. index 474f026..fed3f03 100644
  19. --- a/src/com/android/settings/DateTimeSettings.java
  20. +++ b/src/com/android/settings/DateTimeSettings.java
  21. @@ - 81, 6 + 81, 12 @@ public class DateTimeSettings extends SettingsPreferenceFragment
  22. private SwitchPreference mAutoTimeZonePref;
  23. private Preference mTimeZone;
  24. private Preference mDatePref;
  25. + /* Vanzo:zhangsu on: Sat, 25 Jul 2015 18:18:33 +0800
  26. + * add date format
  27. + */
  28. + private static final String KEY_DATE_FORMAT = "date_format";
  29. + private ListPreference mDateFormat;
  30. + // End of Vanzo: zhangsu
  31. // /M: add for GPS time sync feature @{
  32. private static final int DIALOG_GPS_CONFIRM = 2;
  33. @@ - 151, 8 + 157, 50 @@ public class DateTimeSettings extends SettingsPreferenceFragment
  34. mTime24Pref = findPreference( "24 hour");
  35. mTimeZone = findPreference( "timezone");
  36. mDatePref = findPreference( "date");
  37. + /* Vanzo:zhangsu on: Sat, 25 Jul 2015 18:18:52 +0800
  38. + * add date format
  39. + if (isFirstRun) {
  40. + getPreferenceScreen().removePreference(mTime24Pref);
  41. + }
  42. + */
  43. + mDateFormat = (ListPreference) findPreference(KEY_DATE_FORMAT);
  44. + if (isFirstRun) {
  45. + getPreferenceScreen().removePreference(mTime24Pref);
  46. + getPreferenceScreen().removePreference(mDateFormat);
  47. + }
  48. + String [] dateFormats = getResources().getStringArray(R.array.date_format_values);
  49. + String [] formattedDates = new String[dateFormats.length];
  50. + String currentFormat = getDateFormat();
  51. + // Initialize if DATE_FORMAT is not set in the system settings
  52. + // This can happen after a factory reset (or data wipe)
  53. + if (currentFormat == null) {
  54. + currentFormat = "";
  55. + }
  56. +
  57. + // Prevents duplicated values on date format selector.
  58. + mDummyDate.set(mDummyDate.get(Calendar.YEAR), mDummyDate.DECEMBER, 31, 13, 0, 0);
  59. +
  60. + for ( int i = 0; i < formattedDates.length; i++) {
  61. + /* Vanzo:yujianpeng on: Fri, 01 Apr 2016 21:48:16 +0800
  62. + * TODO: replace this line with your comment
  63. + String formatted =DateFormat.getTimeFormat(getActivity()).format(mDummyDate.getTime());
  64. + */
  65. + String formatted =DateFormat.getDateFormatForSetting(getActivity(), dateFormats[i]).format(mDummyDate.getTime());
  66. + // End of Vanzo:yujianpeng
  67. +
  68. + if (dateFormats[i].length() == 0) {
  69. + formattedDates[i] = getResources().getString(R.string.normal_date_format, formatted);
  70. + } else {
  71. + formattedDates[i] = formatted;
  72. + }
  73. + }
  74. +
  75. + mDateFormat.setEntries(formattedDates);
  76. + mDateFormat.setEntryValues(R.array.date_format_values);
  77. + mDateFormat.setValue(currentFormat);
  78. +
  79. + // End of Vanzo: zhangsu
  80. - // /M: modify as MTK add GPS time Sync feature
  81. boolean autoEnabled = autoTimeEnabled || autoTimeGpsEnabled;
  82. mTimePref.setEnabled(!autoEnabled);
  83. mDatePref.setEnabled(!autoEnabled);
  84. @@ - 193, 18 + 241, 51 @@ public class DateTimeSettings extends SettingsPreferenceFragment
  85. // We use 13:00 so we can demonstrate the 12/24 hour options.
  86. mDummyDate. set( now. get( Calendar. YEAR), 11, 31, 13, 0, 0);
  87. Date dummyDate = mDummyDate.getTime();
  88. + /* Vanzo:zhangsu on: Sat, 25 Jul 2015 18:20:40 +0800
  89. + * add date format
  90. + */
  91. + java.text.DateFormat shortDateFormat = DateFormat.getDateFormat(context);
  92. + mDateFormat.setSummary(shortDateFormat.format(dummyDate));
  93. +
  94. + // End of Vanzo: zhangsu
  95. mDatePref.setSummary(DateFormat.getLongDateFormat(context).format(now.getTime()));
  96. mTimePref.setSummary(DateFormat.getTimeFormat(getActivity()).format(now.getTime()));
  97. mTimeZone.setSummary(ZoneGetter.getTimeZoneOffsetAndName(now.getTimeZone(), now.getTime()));
  98. mTime24Pref.setSummary(DateFormat.getTimeFormat(getActivity()).format(dummyDate));
  99. }
  100. + /* Vanzo:zhangsu on: Sat, 25 Jul 2015 18:21:01 +0800
  101. + * add date format
  102. + */
  103. + private void updateDateFormatEntries() {
  104. + String [] dateFormats = getResources().getStringArray(R.array.date_format_values);
  105. + String [] formattedDates = new String[dateFormats.length];
  106. + for ( int i = 0; i < formattedDates.length; i++) {
  107. + // String formatted =DateFormat.getTimeFormat(getActivity()).format(mDummyDate.getTime());
  108. + String formatted =DateFormat.getDateFormatForSetting(getActivity(), dateFormats[i]).format(mDummyDate.getTime());
  109. + if (dateFormats[i].length() == 0) {
  110. + formattedDates[i] = getResources().getString(R.string.normal_date_format, formatted);
  111. + } else {
  112. + formattedDates[i] = formatted;
  113. + }
  114. + }
  115. + mDateFormat.setEntries(formattedDates);
  116. + }
  117. +
  118. + // End of Vanzo: zhangsu
  119. +
  120. @Override
  121. public void onDateSet(DatePicker view, int year, int month, int day) {
  122. final Activity activity = getActivity();
  123. if (activity != null) {
  124. setDate(activity, year, month, day);
  125. updateTimeAndDateDisplay(activity);
  126. + /* Vanzo:zhangsu on: Sat, 25 Jul 2015 18:21:25 +0800
  127. + * add date format
  128. + */
  129. + updateDateFormatEntries();
  130. +
  131. + // End of Vanzo: zhangsu
  132. }
  133. }
  134. @@ - 250, 6 + 331, 17 @@ public class DateTimeSettings extends SettingsPreferenceFragment
  135. Settings. Global. putInt(
  136. getContentResolver(), Settings. Global. AUTO_TIME_ZONE, autoZoneEnabled ? 1 : 0);
  137. mTimeZone.setEnabled(!autoZoneEnabled);
  138. + /* Vanzo:zhangsu on: Sat, 25 Jul 2015 18:21:54 +0800
  139. + * add date format
  140. + */
  141. + } else if (key.equals(KEY_DATE_FORMAT)) {
  142. + String format = preferences.getString(key,getResources().getString(R.string.default_date_format));
  143. + Settings.System.putString(getContentResolver(),Settings.System.DATE_FORMAT, format);
  144. + updateTimeAndDateDisplay(getActivity());
  145. + Intent timeChanged = new Intent(Intent.ACTION_TIME_CHANGED);
  146. + getActivity().sendBroadcast(timeChanged);
  147. +
  148. + // End of Vanzo: zhangsu
  149. }
  150. }
  151. @@ - 372, 6 + 464, 14 @@ public class DateTimeSettings extends SettingsPreferenceFragment
  152. is24Hour? HOURS_24 : HOURS_12);
  153. }
  154. + /* Vanzo:zhangsu on: Sat, 25 Jul 2015 18:22:19 +0800
  155. + * add date format
  156. + */
  157. + private String getDateFormat() {
  158. + return Settings.System.getString(getContentResolver(),Settings.System.DATE_FORMAT);
  159. + }
  160. + // End of Vanzo: zhangsu
  161. +
  162. private boolean getAutoState(String name) {
  163. try {
  164. return Settings.Global.getInt(getContentResolver(), name) > 0;

二十:日历以星期一为开始 vendor
  1. diff --git a/mediatek/proprietary/packages/apps/Calendar/res/xml/general_preferences.xml b/mediatek/proprietary/packages/apps/Calendar/res/xml/general_preferences.xml
  2. index a0d1577.. 0b17327 100644
  3. --- a/mediatek/proprietary/packages/apps/Calendar/res/xml/general_preferences.xml
  4. +++ b/mediatek/proprietary/packages/apps/Calendar/res/xml/general_preferences.xml
  5. @@ - 26, 7 + 26, 7 @@
  6. android:title= "@string/preferences_show_week_num_title" />
  7. <ListPreference
  8. android:key= "preferences_week_start_day"
  9. - android:defaultValue= "@string/preferences_week_start_day_default"
  10. + android:defaultValue= "2"
  11. android:title= "@string/preferences_week_start_day_title"
  12. android:entries= "@array/preferences_week_start_day_labels"
  13. android:entryValues= "@array/preferences_week_start_day_values"

二十一:硬件版本号 packages/apps/Settings
  1. diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
  2. index 8c647c8..cb38e54 100644
  3. --- a/res/values-es-rUS/strings.xml
  4. +++ b/res/values-es-rUS/strings.xml
  5. @@ - 901, 6 + 901, 7 @@
  6. <string name= "baseband_version" msgid= "1848990160763524801"> "Versión de banda base"</string>
  7. <string name= "kernel_version" msgid= "9192574954196167602"> "Versión de núcleo"</string>
  8. <string name= "build_number" msgid= "3075795840572241758"> "Número de compilación"</string>
  9. + <string name= "hardware_version" msgid= "3075795840572241758"> "Versión de Hardware"</string>
  10. <string name= "selinux_status" msgid= "6212165375172061672"> "Estado de SELinux"</string>
  11. <string name= "device_info_not_available" msgid= "8062521887156825182"> "No disponible"</string>
  12. <string name= "device_status_activity_title" msgid= "1411201799384697904"> "Estado"</string>
  13. diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
  14. index 94e27ea.. 8dce7fe 100644
  15. --- a/res/values-zh-rCN/strings.xml
  16. +++ b/res/values-zh-rCN/strings.xml
  17. @@ - 901, 6 + 901, 7 @@
  18. <string name= "baseband_version" msgid= "1848990160763524801"> "基带版本"</string>
  19. <string name= "kernel_version" msgid= "9192574954196167602"> "内核版本"</string>
  20. <string name= "build_number" msgid= "3075795840572241758"> "版本号"</string>
  21. + <string name= "hardware_version" msgid= "3075795840572241758"> "硬件版本号"</string>
  22. <string name= "selinux_status" msgid= "6212165375172061672"> "SELinux 状态"</string>
  23. <string name= "device_info_not_available" msgid= "8062521887156825182"> "不可用"</string>
  24. <string name= "device_status_activity_title" msgid= "1411201799384697904"> "状态信息"</string>
  25. diff --git a/res/values/strings.xml b/res/values/strings.xml
  26. index ad5ca8c..b57782d 100644
  27. --- a/res/values/strings.xml
  28. +++ b/res/values/strings.xml
  29. @@ - 2149, 6 + 2149, 7 @@
  30. <string name= "kernel_version">Kernel version</string>
  31. <!-- About phone screen, setting option name [CHAR LIMIT= 40] -->
  32. <string name= "build_number">Build number</string>
  33. + <string name= "hardware_version">Hardware version</string>
  34. <!-- About phone screen, setting option name [CHAR LIMIT= 40] -->
  35. <string name= "selinux_status">SELinux status</string>
  36. diff --git a/res/xml/device_info_settings.xml b/res/xml/device_info_settings.xml
  37. index b9ac889..de65506 100644
  38. --- a/res/xml/device_info_settings.xml
  39. +++ b/res/xml/device_info_settings.xml
  40. @@ - 153, 6 + 153, 12 @@ add brand name
  41. android:title= "@string/build_number"
  42. android:summary= "@string/device_info_default"/>
  43. + <!-- Detailed hardware version -->
  44. + <Preference android:key= "hardware_version"
  45. + style= "?android:preferenceInformationStyle"
  46. + android:title= "@string/hardware_version"
  47. + android:summary= "@string/device_info_default"/>
  48. +
  49. <!-- SELinux status information -->
  50. <Preference android:key= "selinux_status"
  51. style= "?android:preferenceInformationStyle"
  52. diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
  53. index fbb818b.. 7ff26f5 100644
  54. --- a/src/com/android/settings/DeviceInfoSettings.java
  55. +++ b/src/com/android/settings/DeviceInfoSettings.java
  56. @@ - 80, 6 + 80, 7 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
  57. private static final String PROPERTY_SELINUX_STATUS = "ro.build.selinux";
  58. private static final String KEY_KERNEL_VERSION = "kernel_version";
  59. private static final String KEY_BUILD_NUMBER = "build_number";
  60. + private static final String KEY_HARDWARE_VERSION = "hardware_version";
  61. private static final String KEY_DEVICE_MODEL = "device_model";
  62. /* Vanzo:tanglei on: Fri, 24 Apr 2015 15:18:32 +0800
  63. * add brand name
  64. @@ -148,6 +149,7 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
  65. setValueSummary(KEY_EQUIPMENT_ID, PROPERTY_EQUIPMENT_ID);
  66. setStringSummary(KEY_DEVICE_MODEL, Build.MODEL);
  67. setStringSummary(KEY_BUILD_NUMBER, Build.DISPLAY);
  68. + setValueSummary(KEY_HARDWARE_VERSION, "ro.build.display.hardware.id");
  69. findPreference(KEY_BUILD_NUMBER).setEnabled(true);
  70. findPreference(KEY_KERNEL_VERSION).setSummary(getFormattedKernelVersion());

二十二:锁屏界面的PIN码和设置里面的那个锁SIM的PIN码 不能超过8位 (设置 > 安全 > 屏幕锁定方式 > PIN码 这个可以输多个是正确的,不用改)
锁屏(frameworks
  1. diff --git a/base/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java b/base/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java
  2. index c41a2d2.. 3bb3d34 100644
  3. --- a/base/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java
  4. +++ b/base/packages/Keyguard/src/com/android/keyguard/PasswordTextView.java
  5. @@ - 187, 29 + 187, 33 @@ public class PasswordTextView extends View {
  6. public void append(char c) {
  7. - int visibleChars = mTextChars.size();
  8. - String textbefore = mText;
  9. - mText = mText + c;
  10. - int newLength = mText.length();
  11. - CharState charState;
  12. - if (newLength > visibleChars) {
  13. - charState = obtainCharState(c);
  14. - mTextChars.add(charState);
  15. - } else {
  16. - charState = mTextChars.get(newLength - 1);
  17. - charState.whichChar = c;
  18. - }
  19. - charState.startAppearAnimation();
  20. + if(mText.length()< 8){
  21. + int visibleChars = mTextChars.size();
  22. + String textbefore = mText;
  23. + mText = mText + c;
  24. + int newLength = mText.length();
  25. + CharState charState;
  26. + if (newLength > visibleChars) {
  27. + charState = obtainCharState(c);
  28. + mTextChars.add(charState);
  29. + } else {
  30. + charState = mTextChars.get(newLength - 1);
  31. + charState.whichChar = c;
  32. + }
  33. + charState.startAppearAnimation();
  34. - // ensure that the previous element is being swapped
  35. - if (newLength > 1) {
  36. - CharState previousState = mTextChars.get(newLength - 2);
  37. - if (previousState.isDotSwapPending) {
  38. - previousState.swapToDotWhenAppearFinished();
  39. + // ensure that the previous element is being swapped
  40. + if (newLength > 1) {
  41. + CharState previousState = mTextChars.get(newLength - 2);
  42. + if (previousState.isDotSwapPending) {
  43. + previousState.swapToDotWhenAppearFinished();
  44. + }
  45. }
  46. + userActivity();
  47. + sendAccessibilityEventTypeViewTextChanged(textbefore, textbefore.length(), 0, 1);
  48. + } else{
  49. + return;
  50. }
  51. - userActivity();
  52. - sendAccessibilityEventTypeViewTextChanged(textbefore, textbefore.length(), 0, 1);
  53. }
  54. public void setUserActivityListener(UserActivityListener userActivitiListener) {
SIM的( packages/apps/Settings
  1. diff --git a/src/com/android/settings/IccLockSettings.java b/src/com/android/settings/IccLockSettings.java
  2. index 2d8134d.. 293eed9 100644
  3. --- a/src/com/android/settings/IccLockSettings.java
  4. +++ b/src/com/android/settings/IccLockSettings.java
  5. @@ - 39, 6 + 39, 7 @@ import android.widget.TabHost;
  6. import android.widget.TabHost.OnTabChangeListener;
  7. import android.widget.TabHost.TabContentFactory;
  8. import android.widget.TabHost.TabSpec;
  9. + import android.text.InputFilter;
  10. import android.widget.TabWidget;
  11. import android.widget.Toast;
  12. @@ - 190, 6 + 191, 8 @@ public class IccLockSettings extends InstrumentedPreferenceActivity
  13. addPreferencesFromResource (R.xml.sim_lock_settings);
  14. mPinDialog = (EditPinPreference) findPreference(PIN_DIALOG);
  15. + mPinDialog.getEditText().setFilters( new InputFilter[]{ new InputFilter.LengthFilter( 8)});
  16. mPinToggle = (SwitchPreference) findPreference(PIN_TOGGLE);
  17. if (savedInstanceState != null && savedInstanceState.containsKey(DIALOG_STATE)) {

猜你喜欢

转载自blog.csdn.net/zhangbijun1230/article/details/80824029