Ensure empty string MMI responses default to "MMI Complete".
Tyler Gunn [Wed, 21 Jun 2017 17:08:46 +0000 (10:08 -0700)]
The existing code checks for null only, but it looks like the modem or
network can sometimes return empty string when there is not result,
which would cause no "MMI Complete" dialog to show.
Checking for empty string as well will solve this problem.

Test: Regression tested MMI codes.
Bug: 37561464
Change-Id: I09caec7eae944bd3dfe97ac8f89c8a113800de1e

src/java/com/android/internal/telephony/gsm/GsmMmiCode.java
src/java/com/android/internal/telephony/imsphone/ImsPhoneMmiCode.java

index a1f304c..ad325ea 100644 (file)
@@ -1017,7 +1017,8 @@ public final class GsmMmiCode extends Handler implements MmiCode {
     public void
     onUssdFinished(String ussdMessage, boolean isUssdRequest) {
         if (mState == State.PENDING) {
-            if (ussdMessage == null) {
+            if (TextUtils.isEmpty(ussdMessage)) {
+                Rlog.d(LOG_TAG, "onUssdFinished: no network provided message; using default.");
                 mMessage = mContext.getText(com.android.internal.R.string.mmiComplete);
             } else {
                 mMessage = ussdMessage;
index 104b6b0..b1013b1 100644 (file)
@@ -998,7 +998,7 @@ public final class ImsPhoneMmiCode extends Handler implements MmiCode {
     void
     onUssdFinished(String ussdMessage, boolean isUssdRequest) {
         if (mState == State.PENDING) {
-            if (ussdMessage == null) {
+            if (TextUtils.isEmpty(ussdMessage)) {
                 mMessage = mContext.getText(com.android.internal.R.string.mmiComplete);
                 Rlog.v(LOG_TAG, "onUssdFinished: no message; using: " + mMessage);
             } else {