Merge "Settings: Fix crash seen when setting the radio band"
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index c6fc4d4..3f5b978 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -771,6 +771,7 @@
<string name="sd_format" product="default" msgid="2576054280507119870">"格式化 SD 卡"</string>
<string name="sd_format_summary" product="nosdcard" msgid="6331905044907914603">"清除内部 USB 存储设备中的全部数据,例如音乐和照片"</string>
<string name="sd_format_summary" product="default" msgid="212703692181793109">"清除 SD 卡中的全部数据,例如音乐和照片"</string>
+ <string name="mtp_ptp_mode_summary">正在使用媒体设备(MTP)或相机(PTP)传输模式</string>
<string name="read_only" msgid="6702420168629076340">" (只读)"</string>
<string name="dlg_confirm_unmount_title" product="nosdcard" msgid="3077285629197874055">"要卸载 USB 存储设备吗?"</string>
<string name="dlg_confirm_unmount_title" product="default" msgid="3634502237262534381">"要卸载 SD 卡吗?"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5a774f0..7015988 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1898,6 +1898,10 @@
<!-- SD card & phone storage settings item title that will result in the phone unmounting the SD card. [CHAR LIMIT=80] -->
<string name="sd_format_summary" product="default">Erases all data on the SD card, such as music and photos</string>
<!-- SD card status when it is mounted as read only. Will be appended to size, starts with an unbreakable space -->
+
+ <!-- SD card & phone storage settings item summary that will result in the phone connected to PC and MTP/PTP enabled. [CHAR LIMIT=80] -->
+ <string name="mtp_ptp_mode_summary">MTP or PTP function is active</string>
+
<string name="read_only">\u0020(Read-only)</string>
<!-- SD card eject confirmation dialog title [CHAR LIMIT=25] -->
<string name="dlg_confirm_unmount_title" product="nosdcard">Unmount USB storage?</string>
diff --git a/src/com/android/settings/ApnEditor.java b/src/com/android/settings/ApnEditor.java
index bca521b..79b6d15 100644
--- a/src/com/android/settings/ApnEditor.java
+++ b/src/com/android/settings/ApnEditor.java
@@ -167,15 +167,7 @@
mProtocol.setOnPreferenceChangeListener(this);
mRoamingProtocol = (ListPreference) findPreference(KEY_ROAMING_PROTOCOL);
- // Only enable this on CDMA phones for now, since it may cause problems on other phone
- // types. (This screen is not normally accessible on CDMA phones, but is useful for
- // testing.)
- TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
- if (tm.getCurrentPhoneType() == PhoneConstants.PHONE_TYPE_CDMA) {
- mRoamingProtocol.setOnPreferenceChangeListener(this);
- } else {
- getPreferenceScreen().removePreference(mRoamingProtocol);
- }
+ mRoamingProtocol.setOnPreferenceChangeListener(this);
mCarrierEnabled = (CheckBoxPreference) findPreference(KEY_CARRIER_ENABLED);
diff --git a/src/com/android/settings/IccLockSettings.java b/src/com/android/settings/IccLockSettings.java
index 755be83..ab12587 100644
--- a/src/com/android/settings/IccLockSettings.java
+++ b/src/com/android/settings/IccLockSettings.java
@@ -348,7 +348,8 @@
// reset dialog state. Else inject error message and show dialog again.
Message callback = Message.obtain(mHandler, MSG_ENABLE_ICC_PIN_COMPLETE);
mPhone.getIccCard().setIccLockEnabled(mToState, mPin, callback);
-
+ // Disable the setting till the response is received.
+ mPinToggle.setEnabled(false);
}
private void iccLockChanged(boolean success) {
@@ -358,6 +359,7 @@
Toast.makeText(this, mRes.getString(R.string.sim_lock_failed), Toast.LENGTH_SHORT)
.show();
}
+ mPinToggle.setEnabled(true);
resetDialogState();
}
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index 77a72a7..4a79eca 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -493,8 +493,8 @@
private void setUsbTethering(boolean enabled) {
ConnectivityManager cm =
(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
+ mUsbTether.setChecked(false);
if (cm.setUsbTethering(enabled) != ConnectivityManager.TETHER_ERROR_NO_ERROR) {
- mUsbTether.setChecked(false);
mUsbTether.setSummary(R.string.usb_tethering_errored_subtext);
return;
}
diff --git a/src/com/android/settings/deviceinfo/Memory.java b/src/com/android/settings/deviceinfo/Memory.java
index cabc6e9..f1c7fbe 100644
--- a/src/com/android/settings/deviceinfo/Memory.java
+++ b/src/com/android/settings/deviceinfo/Memory.java
@@ -24,6 +24,7 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Resources;
+import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.os.Environment;
import android.os.IBinder;
@@ -65,6 +66,8 @@
private StorageManager mStorageManager = null;
+ private UsbManager mUsbManager = null;
+
private StorageVolumePreferenceCategory mInternalStorageVolumePreferenceCategory;
private StorageVolumePreferenceCategory[] mStorageVolumePreferenceCategories;
@@ -72,6 +75,8 @@
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
+ mUsbManager = (UsbManager)getSystemService(Context.USB_SERVICE);
+
if (mStorageManager == null) {
mStorageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE);
mStorageManager.registerListener(mStorageListener);
@@ -119,6 +124,10 @@
intentFilter.addDataScheme("file");
getActivity().registerReceiver(mMediaScannerReceiver, intentFilter);
+ intentFilter = new IntentFilter();
+ intentFilter.addAction(UsbManager.ACTION_USB_STATE);
+ getActivity().registerReceiver(mMediaScannerReceiver, intentFilter);
+
if (mInternalStorageVolumePreferenceCategory != null) {
mInternalStorageVolumePreferenceCategory.onResume();
}
@@ -237,9 +246,18 @@
private final BroadcastReceiver mMediaScannerReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- // mInternalStorageVolumePreferenceCategory is not affected by the media scanner
- for (int i = 0; i < mStorageVolumePreferenceCategories.length; i++) {
- mStorageVolumePreferenceCategories[i].onMediaScannerFinished();
+ String action = intent.getAction();
+ if (action.equals(UsbManager.ACTION_USB_STATE)) {
+ boolean isUsbConnected = intent.getBooleanExtra(UsbManager.USB_CONNECTED, false);
+ String usbFunction = mUsbManager.getDefaultFunction();
+ for (int i = 0; i < mStorageVolumePreferenceCategories.length; i++) {
+ mStorageVolumePreferenceCategories[i].onUsbStateChanged(isUsbConnected, usbFunction);
+ }
+ } else if (action.equals(Intent.ACTION_MEDIA_SCANNER_FINISHED)) {
+ // mInternalStorageVolumePreferenceCategory is not affected by the media scanner
+ for (int i = 0; i < mStorageVolumePreferenceCategories.length; i++) {
+ mStorageVolumePreferenceCategories[i].onMediaScannerFinished();
+ }
}
}
};
diff --git a/src/com/android/settings/deviceinfo/StorageVolumePreferenceCategory.java b/src/com/android/settings/deviceinfo/StorageVolumePreferenceCategory.java
index 0211c77..156184a 100644
--- a/src/com/android/settings/deviceinfo/StorageVolumePreferenceCategory.java
+++ b/src/com/android/settings/deviceinfo/StorageVolumePreferenceCategory.java
@@ -24,6 +24,7 @@
import android.content.res.Resources;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.RectShape;
+import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
@@ -69,6 +70,9 @@
private boolean mAllowFormat;
+ private boolean mUsbConnected;
+ private String mUsbFunction;
+
static class CategoryInfo {
final int mTitle;
final int mColor;
@@ -305,6 +309,23 @@
removePreference(mFormatPreference);
}
}
+
+ if (mUsbConnected && (UsbManager.USB_FUNCTION_MTP.equals(mUsbFunction) ||
+ UsbManager.USB_FUNCTION_PTP.equals(mUsbFunction))) {
+ mMountTogglePreference.setEnabled(false);
+ if (Environment.MEDIA_MOUNTED.equals(state)) {
+ mMountTogglePreference.setSummary(mResources.getString(R.string.mtp_ptp_mode_summary));
+ }
+
+ if (mFormatPreference != null) {
+ mFormatPreference.setEnabled(false);
+ mFormatPreference.setSummary(mResources.getString(R.string.mtp_ptp_mode_summary));
+ }
+ } else if (mFormatPreference != null) {
+ mFormatPreference.setEnabled(true);
+ mFormatPreference.setSummary(mResources.getString(R.string.sd_format_summary));
+ }
+
}
public void updateApproximate(long totalSize, long availSize) {
@@ -376,6 +397,11 @@
measure();
}
+ public void onUsbStateChanged(boolean isUsbConnected, String usbFunction) {
+ mUsbConnected = isUsbConnected;
+ mUsbFunction = usbFunction;
+ measure();
+ }
public void onMediaScannerFinished() {
measure();
}
diff --git a/src/com/android/settings/deviceinfo/UsbSettings.java b/src/com/android/settings/deviceinfo/UsbSettings.java
index af279e8..b8290fc 100644
--- a/src/com/android/settings/deviceinfo/UsbSettings.java
+++ b/src/com/android/settings/deviceinfo/UsbSettings.java
@@ -49,9 +49,15 @@
private UsbManager mUsbManager;
private CheckBoxPreference mMtp;
private CheckBoxPreference mPtp;
+ private boolean mUsbAccessoryMode;
private final BroadcastReceiver mStateReceiver = new BroadcastReceiver() {
public void onReceive(Context content, Intent intent) {
+ String action = intent.getAction();
+ if (action.equals(UsbManager.ACTION_USB_STATE)) {
+ mUsbAccessoryMode = intent.getBooleanExtra(UsbManager.USB_FUNCTION_ACCESSORY, false);
+ Log.e(TAG, "UsbAccessoryMode " + mUsbAccessoryMode);
+ }
updateToggles(mUsbManager.getDefaultFunction());
}
};
@@ -106,6 +112,18 @@
mMtp.setChecked(false);
mPtp.setChecked(false);
}
+
+ if (!mUsbAccessoryMode) {
+ //Enable MTP and PTP switch while USB is not in Accessory Mode, otherwise disable it
+ Log.e(TAG, "USB Normal Mode");
+ mMtp.setEnabled(true);
+ mPtp.setEnabled(true);
+ } else {
+ Log.e(TAG, "USB Accessory Mode");
+ mMtp.setEnabled(false);
+ mPtp.setEnabled(false);
+ }
+
}
@Override