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

Commit 86578cca authored by Shishir Agrawal's avatar Shishir Agrawal
Browse files

Adding the ability for carrier app to override SPN and carrier name.

The change allows system apps (holding MODIFY_PHONE_STATE permission) or
carrier apps to override the "carrier branding" on a per ICCID basis. The
override affects the service provider name as well as the network operator
name. The override is also saved as a SharedPreference and will persist for
the iccId across reboots.

Change-Id: I985ba247e10e2501e3d0d21567ccadc46f365879
parent 38d3c26f
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -29007,6 +29007,7 @@ package android.telephony {
    method public boolean setCdmaSubscription(int);
    method public boolean setCdmaSubscription(int);
    method public void setLine1NumberForDisplay(java.lang.String, java.lang.String);
    method public void setLine1NumberForDisplay(java.lang.String, java.lang.String);
    method public void setLine1NumberForDisplay(long, java.lang.String, java.lang.String);
    method public void setLine1NumberForDisplay(long, java.lang.String, java.lang.String);
    method public boolean setOperatorBrandOverride(java.lang.String, java.lang.String);
    method public boolean setPreferredNetworkType(int);
    method public boolean setPreferredNetworkType(int);
    field public static final java.lang.String ACTION_PHONE_STATE_CHANGED = "android.intent.action.PHONE_STATE";
    field public static final java.lang.String ACTION_PHONE_STATE_CHANGED = "android.intent.action.PHONE_STATE";
    field public static final java.lang.String ACTION_RESPOND_VIA_MESSAGE = "android.intent.action.RESPOND_VIA_MESSAGE";
    field public static final java.lang.String ACTION_RESPOND_VIA_MESSAGE = "android.intent.action.RESPOND_VIA_MESSAGE";
+28 −0
Original line number Original line Diff line number Diff line
@@ -2934,6 +2934,34 @@ public class TelephonyManager {
        return CARRIER_PRIVILEGE_STATUS_NO_ACCESS;
        return CARRIER_PRIVILEGE_STATUS_NO_ACCESS;
    }
    }


    /**
     * Override the branding for the input ICCID.
     *
     * Once set, whenever the ICCID is inserted into the device, the service
     * provider name (SPN) and the operator name will both be replaced by the
     * brand value input. To unset the value, the same function should be
     * called with a null brand value.
     *
     * <p>Requires Permission:
     *   {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
     *  or has to be carrier app - see #hasCarrierPrivileges.
     *
     * @param iccId The ICCID of that the branding applies to.
     * @param brand The brand name to display/set.
     * @return true if the operation was executed correctly.
     */
    public boolean setOperatorBrandOverride(String iccId, String brand) {
        // TODO: Validate ICCID format.
        try {
            return getITelephony().setOperatorBrandOverride(iccId, brand);
        } catch (RemoteException ex) {
            Rlog.e(TAG, "setOperatorBrandOverride RemoteException", ex);
        } catch (NullPointerException ex) {
            Rlog.e(TAG, "setOperatorBrandOverride NPE", ex);
        }
        return false;
    }

    /**
    /**
     * Expose the rest of ITelephony to @SystemApi
     * Expose the rest of ITelephony to @SystemApi
     */
     */
+18 −0
Original line number Original line Diff line number Diff line
@@ -706,5 +706,23 @@ interface ITelephony {
     *         not set.
     *         not set.
     */
     */
    String getLine1AlphaTagForDisplay(long subId);
    String getLine1AlphaTagForDisplay(long subId);

    /**
     * Override the operator branding for the input ICCID.
     *
     * Once set, whenever the ICCID is inserted into the device, the service
     * provider name (SPN) and the operator name will both be replaced by the
     * brand value input. To unset the value, the same function should be
     * called with a null brand value.
     *
     * <p>Requires Permission:
     *   {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
     *  or has to be carrier app - see #hasCarrierPrivileges.
     *
     * @param iccid The ICCID of that the branding applies to.
     * @param brand The brand name to display/set.
     * @return true if the operation was executed correctly.
     */
    boolean setOperatorBrandOverride(String iccId, String brand);
}
}