In normal operation, Phone.getLine1Number() returns an empty string if the
device doesn't know its own phone number for some reason. However the
monkey caught a case where it was returning null, which crashed the
Settings -> About Phone -> Status app.
However the javadoc for Phone.getLine1Number() *does* clearly say "May
return null if not available or the SIM is not ready", so the Status app
*should* gracefully handle this.
Now it does. (We display this case as "Unknown", just like if we get an
empty string.)
FWIW I grepped thru the rest of the code base for other uses of
getLine1Number(), and everybody else *does* handle null gracefully except
for one case in apps/Mms, which I'll open a separate bug about.
Bug:
2520977
Change-Id: I173561f903f116dbdc2b7c32b8011b59a9eb29d7
}
}
- setSummaryText("number", PhoneNumberUtils.formatNumber(mPhone.getLine1Number()));
+ String rawNumber = mPhone.getLine1Number(); // may be null or empty
+ String formattedNumber = null;
+ if (!TextUtils.isEmpty(rawNumber)) {
+ formattedNumber = PhoneNumberUtils.formatNumber(rawNumber);
+ }
+ // If formattedNumber is null or empty, it'll display as "Unknown".
+ setSummaryText("number", formattedNumber);
mPhoneStateReceiver = new PhoneStateIntentReceiver(this, mHandler);
mPhoneStateReceiver.notifySignalStrength(EVENT_SIGNAL_STRENGTH_CHANGED);