Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f5bee01 authored by Jake Hamby's avatar Jake Hamby
Browse files

Fix NPE in CallerInfo.getCurrentCountryIso().

Internal method CallerInfo.getCurrentCountryIso() can throw NPE
if the country detector's detectCountry() method returns null.
Add code to check that the Country is not null before calling
getCountryIso() on it. Change fallback logic to call
locale.getCountry() whenever countryIso was not assigned.

Bug: 10607906
Change-Id: I08fe3f4d942f67c37a2e6ff0b067fe32ad8a6fa5
parent c23ee579
Loading
Loading
Loading
Loading
+18 −11
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.location.Country;
import android.location.CountryDetector;
import android.net.Uri;
import android.provider.ContactsContract.CommonDataKinds.Phone;
@@ -561,12 +562,18 @@ public class CallerInfo {
     *         is in.
     */
    private static String getCurrentCountryIso(Context context, Locale locale) {
      String countryIso;
        String countryIso = null;
        CountryDetector detector = (CountryDetector) context.getSystemService(
                Context.COUNTRY_DETECTOR);
        if (detector != null) {
        countryIso = detector.detectCountry().getCountryIso();
            Country country = detector.detectCountry();
            if (country != null) {
                countryIso = country.getCountryIso();
            } else {
                Rlog.e(TAG, "CountryDetector.detectCountry() returned null.");
            }
        }
        if (countryIso == null) {
            countryIso = locale.getCountry();
            Rlog.w(TAG, "No CountryDetector; falling back to countryIso based on locale: "
                    + countryIso);