Merge "Fix NPE in Call Forwarding Menu" am: ee39e6e007 am: aa84d8298a
am: 4f7dfbb2db
Change-Id: I8cad3504c036242bdee846fb2c6071bb2e46949c
diff --git a/src/com/android/phone/CallForwardEditPreference.java b/src/com/android/phone/CallForwardEditPreference.java
index f676371..bfeee7a 100644
--- a/src/com/android/phone/CallForwardEditPreference.java
+++ b/src/com/android/phone/CallForwardEditPreference.java
@@ -69,22 +69,11 @@
this(context, null);
}
- void init(TimeConsumingPreferenceListener listener, boolean skipReading, Phone phone,
+ void init(TimeConsumingPreferenceListener listener, Phone phone,
boolean replaceInvalidCFNumber) {
mPhone = phone;
mTcpListener = listener;
mReplaceInvalidCFNumber = replaceInvalidCFNumber;
-
- if (!skipReading) {
- mPhone.getCallForwardingOption(reason,
- mHandler.obtainMessage(MyHandler.MESSAGE_GET_CF,
- // unused in this case
- CommandsInterface.CF_ACTION_DISABLE,
- MyHandler.MESSAGE_GET_CF, null));
- if (mTcpListener != null) {
- mTcpListener.onStarted(this, true);
- }
- }
}
@Override
@@ -176,6 +165,23 @@
setPhoneNumber(displayVoicemailNumber ? voicemailNumber : callForwardInfo.number);
}
+ /**
+ * Starts the Call Forwarding Option query to the network and calls
+ * {@link TimeConsumingPreferenceListener#onStarted}. Will call
+ * {@link TimeConsumingPreferenceListener#onFinished} when finished, or
+ * {@link TimeConsumingPreferenceListener#onError} if an error has occurred.
+ */
+ void startCallForwardOptionsQuery() {
+ mPhone.getCallForwardingOption(reason,
+ mHandler.obtainMessage(MyHandler.MESSAGE_GET_CF,
+ // unused in this case
+ CommandsInterface.CF_ACTION_DISABLE,
+ MyHandler.MESSAGE_GET_CF, null));
+ if (mTcpListener != null) {
+ mTcpListener.onStarted(this, true);
+ }
+ }
+
private void updateSummaryText() {
if (isToggled()) {
final String number = getRawPhoneNumber();
diff --git a/src/com/android/phone/GsmUmtsCallForwardOptions.java b/src/com/android/phone/GsmUmtsCallForwardOptions.java
index ab2f914..e562e46 100644
--- a/src/com/android/phone/GsmUmtsCallForwardOptions.java
+++ b/src/com/android/phone/GsmUmtsCallForwardOptions.java
@@ -16,7 +16,6 @@
import java.util.ArrayList;
-
public class GsmUmtsCallForwardOptions extends TimeConsumingPreferenceActivity {
private static final String LOG_TAG = "GsmUmtsCallForwardOptions";
@@ -103,7 +102,10 @@
if (mFirstResume) {
if (mIcicle == null) {
Log.d(LOG_TAG, "start to init ");
- mPreferences.get(mInitIndex).init(this, false, mPhone, mReplaceInvalidCFNumbers);
+ CallForwardEditPreference pref = mPreferences.get(mInitIndex);
+ pref.init(this, mPhone, mReplaceInvalidCFNumbers);
+ pref.startCallForwardOptionsQuery();
+
} else {
mInitIndex = mPreferences.size();
@@ -113,8 +115,8 @@
CallForwardInfo cf = new CallForwardInfo();
cf.number = bundle.getString(KEY_NUMBER);
cf.status = bundle.getInt(KEY_STATUS);
+ pref.init(this, mPhone, mReplaceInvalidCFNumbers);
pref.handleCallForwardResult(cf);
- pref.init(this, true, mPhone, mReplaceInvalidCFNumbers);
}
}
mFirstResume = false;
@@ -141,7 +143,9 @@
public void onFinished(Preference preference, boolean reading) {
if (mInitIndex < mPreferences.size()-1 && !isFinishing()) {
mInitIndex++;
- mPreferences.get(mInitIndex).init(this, false, mPhone, mReplaceInvalidCFNumbers);
+ CallForwardEditPreference pref = mPreferences.get(mInitIndex);
+ pref.init(this, mPhone, mReplaceInvalidCFNumbers);
+ pref.startCallForwardOptionsQuery();
}
super.onFinished(preference, reading);