Merge "Edit to label for regional date format to "Regional" from "Normal" Bug: 3471626"
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index 7efa15d..636799d 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -94,8 +94,7 @@
final Activity activity = getActivity();
mAirplaneModePreference = (CheckBoxPreference) findPreference(KEY_TOGGLE_AIRPLANE);
CheckBoxPreference nfc = (CheckBoxPreference) findPreference(KEY_TOGGLE_NFC);
- PreferenceScreen zeroclick = (PreferenceScreen)
- findPreference(KEY_ZEROCLICK_SETTINGS);
+ PreferenceScreen zeroclick = (PreferenceScreen) findPreference(KEY_ZEROCLICK_SETTINGS);
mAirplaneModeEnabler = new AirplaneModeEnabler(activity, mAirplaneModePreference);
mNfcEnabler = new NfcEnabler(activity, nfc, zeroclick);
@@ -113,11 +112,18 @@
// No bluetooth-dependent items in the list. Code kept in case one is added later.
}
+ // Manually set dependencies for NFC when not toggleable.
+ if (toggleable == null || !toggleable.contains(Settings.System.RADIO_NFC)) {
+ findPreference(KEY_TOGGLE_NFC).setDependency(KEY_TOGGLE_AIRPLANE);
+ findPreference(KEY_ZEROCLICK_SETTINGS).setDependency(KEY_TOGGLE_AIRPLANE);
+ }
+
// Remove NFC if its not available
mNfcAdapter = NfcAdapter.getDefaultAdapter(activity);
if (mNfcAdapter == null) {
getPreferenceScreen().removePreference(nfc);
getPreferenceScreen().removePreference(zeroclick);
+ mNfcEnabler = null;
}
// Remove Mobile Network Settings if it's a wifi-only device.
@@ -176,18 +182,8 @@
super.onResume();
mAirplaneModeEnabler.resume();
- mNfcEnabler.resume();
-
- if (mNfcAdapter != null) {
- // Update zero-click subtitle
- Preference zeroClick = getPreferenceScreen().
- findPreference(KEY_ZEROCLICK_SETTINGS);
-
- if (mNfcAdapter.zeroClickEnabled()) {
- zeroClick.setSummary(R.string.zeroclick_on_summary);
- } else {
- zeroClick.setSummary(R.string.zeroclick_off_summary);
- }
+ if (mNfcEnabler != null) {
+ mNfcEnabler.resume();
}
}
@@ -196,7 +192,9 @@
super.onPause();
mAirplaneModeEnabler.pause();
- mNfcEnabler.pause();
+ if (mNfcEnabler != null) {
+ mNfcEnabler.pause();
+ }
}
@Override
diff --git a/src/com/android/settings/inputmethod/InputMethodPreference.java b/src/com/android/settings/inputmethod/InputMethodPreference.java
index 21057a6..f490fd2 100644
--- a/src/com/android/settings/inputmethod/InputMethodPreference.java
+++ b/src/com/android/settings/inputmethod/InputMethodPreference.java
@@ -21,6 +21,7 @@
import android.app.AlertDialog;
import android.app.Fragment;
+import android.content.ActivityNotFoundException;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
@@ -102,7 +103,13 @@
new OnClickListener() {
@Override
public void onClick(View arg0) {
- mFragment.startActivity(mSettingsIntent);
+ try {
+ mFragment.startActivity(mSettingsIntent);
+ } catch (ActivityNotFoundException e) {
+ Log.d(TAG, "IME's Settings Activity Not Found: " + e);
+ // If the IME's settings activity does not exist, we can just
+ // do nothing...
+ }
}
});
}
diff --git a/src/com/android/settings/nfc/NfcEnabler.java b/src/com/android/settings/nfc/NfcEnabler.java
index 99cf8f0..722787d 100644
--- a/src/com/android/settings/nfc/NfcEnabler.java
+++ b/src/com/android/settings/nfc/NfcEnabler.java
@@ -27,6 +27,8 @@
import android.preference.PreferenceScreen;
import android.util.Log;
+import com.android.settings.R;
+
/**
* NfcEnabler is a helper to manage the Nfc on/off checkbox preference. It is
* turns on/off Nfc and ensures the summary of the preference reflects the
@@ -46,16 +48,13 @@
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
- if (NfcAdapter.ACTION_ADAPTER_STATE_CHANGE.equals(action)) {
- handleNfcStateChanged(intent.getBooleanExtra(
- NfcAdapter.EXTRA_NEW_BOOLEAN_STATE,
- false));
+ if (NfcAdapter.ACTION_ADAPTER_STATE_CHANGED.equals(action)) {
+ handleNfcStateChanged(intent.getIntExtra(NfcAdapter.EXTRA_ADAPTER_STATE,
+ NfcAdapter.STATE_OFF));
}
}
};
- private boolean mNfcState;
-
public NfcEnabler(Context context, CheckBoxPreference checkBoxPreference,
PreferenceScreen zeroclick) {
mContext = context;
@@ -66,20 +65,20 @@
if (mNfcAdapter == null) {
// NFC is not supported
mCheckbox.setEnabled(false);
+ mZeroClick.setEnabled(false);
+ mIntentFilter = null;
+ return;
}
-
- mIntentFilter = new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGE);
-
+ mIntentFilter = new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED);
}
public void resume() {
if (mNfcAdapter == null) {
return;
}
+ handleNfcStateChanged(mNfcAdapter.getAdapterState());
mContext.registerReceiver(mReceiver, mIntentFilter);
mCheckbox.setOnPreferenceChangeListener(this);
- mNfcState = mNfcAdapter.isEnabled();
- mCheckbox.setChecked(mNfcState);
}
public void pause() {
@@ -96,41 +95,43 @@
final boolean desiredState = (Boolean) value;
mCheckbox.setEnabled(false);
- // Start async update of the NFC adapter state, as the API is
- // unfortunately blocking...
- new Thread("toggleNFC") {
- @Override
- public void run() {
- Log.d(TAG, "Setting NFC enabled state to: " + desiredState);
- boolean success = false;
- if (desiredState) {
- success = mNfcAdapter.enable();
- } else {
- success = mNfcAdapter.disable();
- }
- if (success) {
- Log.d(TAG, "Successfully changed NFC enabled state to " + desiredState);
- mHandler.post(new Runnable() {
- public void run() {
- handleNfcStateChanged(desiredState);
- }
- });
- } else {
- Log.w(TAG, "Error setting NFC enabled state to " + desiredState);
- mHandler.post(new Runnable() {
- public void run() {
- mCheckbox.setEnabled(true);
- }
- });
- }
- }
- }.start();
+ if (desiredState) {
+ mNfcAdapter.enable();
+ } else {
+ mNfcAdapter.disable();
+ }
+
return false;
}
- private void handleNfcStateChanged(boolean newState) {
- mCheckbox.setChecked(newState);
- mCheckbox.setEnabled(true);
- mZeroClick.setEnabled(newState);
+ private void handleNfcStateChanged(int newState) {
+ switch (newState) {
+ case NfcAdapter.STATE_OFF:
+ mCheckbox.setChecked(false);
+ mCheckbox.setEnabled(true);
+ mZeroClick.setEnabled(false);
+ mZeroClick.setSummary(R.string.zeroclick_off_summary);
+ break;
+ case NfcAdapter.STATE_ON:
+ mCheckbox.setChecked(true);
+ mCheckbox.setEnabled(true);
+ mZeroClick.setEnabled(true);
+ if (mNfcAdapter.isZeroClickEnabled()) {
+ mZeroClick.setSummary(R.string.zeroclick_on_summary);
+ } else {
+ mZeroClick.setSummary(R.string.zeroclick_off_summary);
+ }
+ break;
+ case NfcAdapter.STATE_TURNING_ON:
+ mCheckbox.setChecked(true);
+ mCheckbox.setEnabled(false);
+ mZeroClick.setEnabled(false);
+ break;
+ case NfcAdapter.STATE_TURNING_OFF:
+ mCheckbox.setChecked(false);
+ mCheckbox.setEnabled(false);
+ mZeroClick.setEnabled(false);
+ break;
+ }
}
}
diff --git a/src/com/android/settings/nfc/ZeroClick.java b/src/com/android/settings/nfc/ZeroClick.java
index 5c67e52..1b59b52 100644
--- a/src/com/android/settings/nfc/ZeroClick.java
+++ b/src/com/android/settings/nfc/ZeroClick.java
@@ -63,7 +63,7 @@
mActionBarSwitch.setOnCheckedChangeListener(this);
mNfcAdapter = NfcAdapter.getDefaultAdapter(getActivity());
- mActionBarSwitch.setChecked(mNfcAdapter.zeroClickEnabled());
+ mActionBarSwitch.setChecked(mNfcAdapter.isZeroClickEnabled());
}
@Override
@@ -77,7 +77,7 @@
private void initView(View view) {
mNfcAdapter = NfcAdapter.getDefaultAdapter(getActivity());
mActionBarSwitch.setOnCheckedChangeListener(this);
- mActionBarSwitch.setChecked(mNfcAdapter.zeroClickEnabled());
+ mActionBarSwitch.setChecked(mNfcAdapter.isZeroClickEnabled());
}
@Override