Loading src/java/com/android/internal/telephony/CarrierIdentifier.java +20 −23 Original line number Diff line number Diff line Loading @@ -20,13 +20,11 @@ import static android.provider.Telephony.CarrierId; import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; import android.os.Handler; import android.os.Message; import android.preference.PreferenceManager; import android.provider.Telephony; import android.telephony.Rlog; import android.telephony.SubscriptionManager; Loading @@ -38,6 +36,7 @@ import android.util.Log; import com.android.internal.telephony.metrics.TelephonyMetrics; import com.android.internal.telephony.uicc.IccRecords; import com.android.internal.telephony.uicc.UiccController; import com.android.internal.telephony.uicc.UiccProfile; import com.android.internal.util.IndentingPrintWriter; import java.io.FileDescriptor; Loading Loading @@ -85,12 +84,11 @@ public class CarrierIdentifier extends Handler { private Context mContext; private Phone mPhone; private IccRecords mIccRecords; private UiccProfile mUiccProfile; private final LocalLog mCarrierIdLocalLog = new LocalLog(20); private final TelephonyManager mTelephonyMgr; private final SubscriptionsChangedListener mOnSubscriptionsChangedListener = new SubscriptionsChangedListener(); private final SharedPreferenceChangedListener mSharedPrefListener = new SharedPreferenceChangedListener(); private final ContentObserver mContentObserver = new ContentObserver(this) { @Override Loading Loading @@ -130,20 +128,6 @@ public class CarrierIdentifier extends Handler { } } private class SharedPreferenceChangedListener implements SharedPreferences.OnSharedPreferenceChangeListener { @Override public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key) { if (TextUtils.equals(key, OPERATOR_BRAND_OVERRIDE_PREFIX + mPhone.getIccSerialNumber())) { // SPN override from carrier privileged apps logd("[onSharedPreferenceChanged]: " + key); sendEmptyMessage(SPN_OVERRIDE_EVENT); } } } public CarrierIdentifier(Phone phone) { logd("Creating CarrierIdentifier[" + phone.getPhoneId() + "]"); mContext = phone.getContext(); Loading @@ -157,8 +141,6 @@ public class CarrierIdentifier extends Handler { CarrierId.All.CONTENT_URI, false, mContentObserver); SubscriptionManager.from(mContext).addOnSubscriptionsChangedListener( mOnSubscriptionsChangedListener); PreferenceManager.getDefaultSharedPreferences(mContext) .registerOnSharedPreferenceChangeListener(mSharedPrefListener); UiccController.getInstance().registerForIccChanged(this, ICC_CHANGED_EVENT, null); } Loading Loading @@ -222,21 +204,36 @@ public class CarrierIdentifier extends Handler { } break; case ICC_CHANGED_EVENT: final IccRecords newIccRecords = mPhone.getIccRecords(); // all records used for carrier identification are from SimRecord final IccRecords newIccRecords = UiccController.getInstance().getIccRecords( mPhone.getPhoneId(), UiccController.APP_FAM_3GPP); if (mIccRecords != newIccRecords) { if (mIccRecords != null) { logd("Removing stale icc objects."); mIccRecords.unregisterForSpnUpdate(this); mIccRecords.unregisterForRecordsLoaded(this); mIccRecords = null; } if (newIccRecords != null) { logd("new Icc object"); newIccRecords.registerForSpnUpdate(this, SPN_OVERRIDE_EVENT, null); newIccRecords.registerForRecordsLoaded(this, SIM_LOAD_EVENT, null); mIccRecords = newIccRecords; } } // check UICC profile final UiccProfile uiccProfile = UiccController.getInstance() .getUiccProfileForPhone(mPhone.getPhoneId()); if (mUiccProfile != uiccProfile) { if (mUiccProfile != null) { logd("unregister operatorBrandOverride"); mUiccProfile.unregisterForOperatorBrandOverride(this); mUiccProfile = null; } if (uiccProfile != null) { logd("register operatorBrandOverride"); uiccProfile.registerForOpertorBrandOverride(this, SPN_OVERRIDE_EVENT, null); mUiccProfile = uiccProfile; } } break; default: loge("invalid msg: " + msg.what); Loading src/java/com/android/internal/telephony/GsmCdmaPhone.java +16 −0 Original line number Diff line number Diff line Loading @@ -1552,6 +1552,22 @@ public class GsmCdmaPhone extends Phone { return mCarrerIdentifier.getCarrierListVersion(); } @Override public void setCarrierTestOverride(String mccmnc, String imsi, String iccid, String gid1, String gid2, String pnn, String spn) { IccRecords r = null; if (isPhoneTypeGsm()) { r = mIccRecords.get(); } else if (isPhoneTypeCdmaLte()) { r = mSimRecords; } else { loge("setCarrierTestOverride fails in CDMA only"); } if (r != null) { r.setCarrierTestOverride(mccmnc, imsi, iccid, gid1, gid2, pnn, spn); } } @Override public String getGroupIdLevel1() { if (isPhoneTypeGsm()) { Loading src/java/com/android/internal/telephony/Phone.java +0 −4 Original line number Diff line number Diff line Loading @@ -3603,10 +3603,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { public void setCarrierTestOverride(String mccmnc, String imsi, String iccid, String gid1, String gid2, String pnn, String spn) { IccRecords r = mIccRecords.get(); if (r != null) { r.setCarrierTestOverride(mccmnc, imsi, iccid, gid1, gid2, pnn, spn); } } public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { Loading src/java/com/android/internal/telephony/uicc/UiccProfile.java +32 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ public class UiccProfile extends IccCard { private boolean mDisposed = false; private RegistrantList mCarrierPrivilegeRegistrants = new RegistrantList(); private RegistrantList mOperatorBrandOverrideRegistrants = new RegistrantList(); private final int mPhoneId; Loading Loading @@ -325,6 +326,7 @@ public class UiccProfile extends IccCard { mIccRecords.setServiceProviderName(ccName); } mTelephonyManager.setSimOperatorNameForPhone(mPhoneId, ccName); mOperatorBrandOverrideRegistrants.notifyRegistrants(); } updateCarrierNameForSubscription(subCon, subId); Loading Loading @@ -1012,6 +1014,20 @@ public class UiccProfile extends IccCard { return index; } /** * Registers the handler when operator brand name is overridden. * * @param h Handler for notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForOpertorBrandOverride(Handler h, int what, Object obj) { synchronized (mLock) { Registrant r = new Registrant(h, what, obj); mOperatorBrandOverrideRegistrants.add(r); } } /** * Registers the handler when carrier privilege rules are loaded. * Loading Loading @@ -1042,6 +1058,17 @@ public class UiccProfile extends IccCard { } } /** * Unregister for notifications when operator brand name is overriden. * * @param h Handler to be removed from the registrant list. */ public void unregisterForOperatorBrandOverride(Handler h) { synchronized (mLock) { mOperatorBrandOverrideRegistrants.remove(h); } } private boolean isPackageInstalled(String pkgName) { PackageManager pm = mContext.getPackageManager(); try { Loading Loading @@ -1417,6 +1444,7 @@ public class UiccProfile extends IccCard { } else { spEditor.putString(key, brand).commit(); } mOperatorBrandOverrideRegistrants.notifyRegistrants(); return true; } Loading Loading @@ -1485,6 +1513,10 @@ public class UiccProfile extends IccCard { pw.println(" mCarrierPrivilegeRegistrants[" + i + "]=" + ((Registrant) mCarrierPrivilegeRegistrants.get(i)).getHandler()); } for (int i = 0; i < mOperatorBrandOverrideRegistrants.size(); i++) { pw.println(" mOperatorBrandOverrideRegistrants[" + i + "]=" + ((Registrant) mOperatorBrandOverrideRegistrants.get(i)).getHandler()); } pw.println(" mUniversalPinState=" + mUniversalPinState); pw.println(" mGsmUmtsSubscriptionAppIndex=" + mGsmUmtsSubscriptionAppIndex); pw.println(" mCdmaSubscriptionAppIndex=" + mCdmaSubscriptionAppIndex); Loading Loading
src/java/com/android/internal/telephony/CarrierIdentifier.java +20 −23 Original line number Diff line number Diff line Loading @@ -20,13 +20,11 @@ import static android.provider.Telephony.CarrierId; import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; import android.os.Handler; import android.os.Message; import android.preference.PreferenceManager; import android.provider.Telephony; import android.telephony.Rlog; import android.telephony.SubscriptionManager; Loading @@ -38,6 +36,7 @@ import android.util.Log; import com.android.internal.telephony.metrics.TelephonyMetrics; import com.android.internal.telephony.uicc.IccRecords; import com.android.internal.telephony.uicc.UiccController; import com.android.internal.telephony.uicc.UiccProfile; import com.android.internal.util.IndentingPrintWriter; import java.io.FileDescriptor; Loading Loading @@ -85,12 +84,11 @@ public class CarrierIdentifier extends Handler { private Context mContext; private Phone mPhone; private IccRecords mIccRecords; private UiccProfile mUiccProfile; private final LocalLog mCarrierIdLocalLog = new LocalLog(20); private final TelephonyManager mTelephonyMgr; private final SubscriptionsChangedListener mOnSubscriptionsChangedListener = new SubscriptionsChangedListener(); private final SharedPreferenceChangedListener mSharedPrefListener = new SharedPreferenceChangedListener(); private final ContentObserver mContentObserver = new ContentObserver(this) { @Override Loading Loading @@ -130,20 +128,6 @@ public class CarrierIdentifier extends Handler { } } private class SharedPreferenceChangedListener implements SharedPreferences.OnSharedPreferenceChangeListener { @Override public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key) { if (TextUtils.equals(key, OPERATOR_BRAND_OVERRIDE_PREFIX + mPhone.getIccSerialNumber())) { // SPN override from carrier privileged apps logd("[onSharedPreferenceChanged]: " + key); sendEmptyMessage(SPN_OVERRIDE_EVENT); } } } public CarrierIdentifier(Phone phone) { logd("Creating CarrierIdentifier[" + phone.getPhoneId() + "]"); mContext = phone.getContext(); Loading @@ -157,8 +141,6 @@ public class CarrierIdentifier extends Handler { CarrierId.All.CONTENT_URI, false, mContentObserver); SubscriptionManager.from(mContext).addOnSubscriptionsChangedListener( mOnSubscriptionsChangedListener); PreferenceManager.getDefaultSharedPreferences(mContext) .registerOnSharedPreferenceChangeListener(mSharedPrefListener); UiccController.getInstance().registerForIccChanged(this, ICC_CHANGED_EVENT, null); } Loading Loading @@ -222,21 +204,36 @@ public class CarrierIdentifier extends Handler { } break; case ICC_CHANGED_EVENT: final IccRecords newIccRecords = mPhone.getIccRecords(); // all records used for carrier identification are from SimRecord final IccRecords newIccRecords = UiccController.getInstance().getIccRecords( mPhone.getPhoneId(), UiccController.APP_FAM_3GPP); if (mIccRecords != newIccRecords) { if (mIccRecords != null) { logd("Removing stale icc objects."); mIccRecords.unregisterForSpnUpdate(this); mIccRecords.unregisterForRecordsLoaded(this); mIccRecords = null; } if (newIccRecords != null) { logd("new Icc object"); newIccRecords.registerForSpnUpdate(this, SPN_OVERRIDE_EVENT, null); newIccRecords.registerForRecordsLoaded(this, SIM_LOAD_EVENT, null); mIccRecords = newIccRecords; } } // check UICC profile final UiccProfile uiccProfile = UiccController.getInstance() .getUiccProfileForPhone(mPhone.getPhoneId()); if (mUiccProfile != uiccProfile) { if (mUiccProfile != null) { logd("unregister operatorBrandOverride"); mUiccProfile.unregisterForOperatorBrandOverride(this); mUiccProfile = null; } if (uiccProfile != null) { logd("register operatorBrandOverride"); uiccProfile.registerForOpertorBrandOverride(this, SPN_OVERRIDE_EVENT, null); mUiccProfile = uiccProfile; } } break; default: loge("invalid msg: " + msg.what); Loading
src/java/com/android/internal/telephony/GsmCdmaPhone.java +16 −0 Original line number Diff line number Diff line Loading @@ -1552,6 +1552,22 @@ public class GsmCdmaPhone extends Phone { return mCarrerIdentifier.getCarrierListVersion(); } @Override public void setCarrierTestOverride(String mccmnc, String imsi, String iccid, String gid1, String gid2, String pnn, String spn) { IccRecords r = null; if (isPhoneTypeGsm()) { r = mIccRecords.get(); } else if (isPhoneTypeCdmaLte()) { r = mSimRecords; } else { loge("setCarrierTestOverride fails in CDMA only"); } if (r != null) { r.setCarrierTestOverride(mccmnc, imsi, iccid, gid1, gid2, pnn, spn); } } @Override public String getGroupIdLevel1() { if (isPhoneTypeGsm()) { Loading
src/java/com/android/internal/telephony/Phone.java +0 −4 Original line number Diff line number Diff line Loading @@ -3603,10 +3603,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { public void setCarrierTestOverride(String mccmnc, String imsi, String iccid, String gid1, String gid2, String pnn, String spn) { IccRecords r = mIccRecords.get(); if (r != null) { r.setCarrierTestOverride(mccmnc, imsi, iccid, gid1, gid2, pnn, spn); } } public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { Loading
src/java/com/android/internal/telephony/uicc/UiccProfile.java +32 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ public class UiccProfile extends IccCard { private boolean mDisposed = false; private RegistrantList mCarrierPrivilegeRegistrants = new RegistrantList(); private RegistrantList mOperatorBrandOverrideRegistrants = new RegistrantList(); private final int mPhoneId; Loading Loading @@ -325,6 +326,7 @@ public class UiccProfile extends IccCard { mIccRecords.setServiceProviderName(ccName); } mTelephonyManager.setSimOperatorNameForPhone(mPhoneId, ccName); mOperatorBrandOverrideRegistrants.notifyRegistrants(); } updateCarrierNameForSubscription(subCon, subId); Loading Loading @@ -1012,6 +1014,20 @@ public class UiccProfile extends IccCard { return index; } /** * Registers the handler when operator brand name is overridden. * * @param h Handler for notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForOpertorBrandOverride(Handler h, int what, Object obj) { synchronized (mLock) { Registrant r = new Registrant(h, what, obj); mOperatorBrandOverrideRegistrants.add(r); } } /** * Registers the handler when carrier privilege rules are loaded. * Loading Loading @@ -1042,6 +1058,17 @@ public class UiccProfile extends IccCard { } } /** * Unregister for notifications when operator brand name is overriden. * * @param h Handler to be removed from the registrant list. */ public void unregisterForOperatorBrandOverride(Handler h) { synchronized (mLock) { mOperatorBrandOverrideRegistrants.remove(h); } } private boolean isPackageInstalled(String pkgName) { PackageManager pm = mContext.getPackageManager(); try { Loading Loading @@ -1417,6 +1444,7 @@ public class UiccProfile extends IccCard { } else { spEditor.putString(key, brand).commit(); } mOperatorBrandOverrideRegistrants.notifyRegistrants(); return true; } Loading Loading @@ -1485,6 +1513,10 @@ public class UiccProfile extends IccCard { pw.println(" mCarrierPrivilegeRegistrants[" + i + "]=" + ((Registrant) mCarrierPrivilegeRegistrants.get(i)).getHandler()); } for (int i = 0; i < mOperatorBrandOverrideRegistrants.size(); i++) { pw.println(" mOperatorBrandOverrideRegistrants[" + i + "]=" + ((Registrant) mOperatorBrandOverrideRegistrants.get(i)).getHandler()); } pw.println(" mUniversalPinState=" + mUniversalPinState); pw.println(" mGsmUmtsSubscriptionAppIndex=" + mGsmUmtsSubscriptionAppIndex); pw.println(" mCdmaSubscriptionAppIndex=" + mCdmaSubscriptionAppIndex); Loading