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

Commit 3d00d698 authored by fionaxu's avatar fionaxu
Browse files

add a current table in CarrierIdProvider

restructure CarrierIdProvider into two tables
1. All - a private table which stores a complete mapping of all carriers
2. Current - a public table only stores the carrier identification of the
current active subs. require no permission to query.
expose the content url to public so that apps could be
notified on carrier identity change either on background or foreground.

Bug: 72571475
Test: runtest --path CarrierIdProviderTest.java
Test: Manual
Change-Id: If2a20288e63d25343f5bb582b35564d769a4e13b
parent 7db9d221
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -36678,6 +36678,13 @@ package android.provider {
    field public static final java.lang.String ADDRESS = "address";
  }
  public static final class Telephony.CarrierIdentification implements android.provider.BaseColumns {
    method public static android.net.Uri getUriForSubscriptionId(int);
    field public static final java.lang.String CID = "carrier_id";
    field public static final android.net.Uri CONTENT_URI;
    field public static final java.lang.String NAME = "carrier_name";
  }
  public static final class Telephony.Carriers implements android.provider.BaseColumns {
    field public static final java.lang.String APN = "apn";
    field public static final java.lang.String AUTH_TYPE = "authtype";
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ public class CarrierIdInstallReceiver extends ConfigUpdateInstallReceiver {
    @Override
    protected void postInstall(Context context, Intent intent) {
        ContentResolver resolver = context.getContentResolver();
        resolver.update(Uri.withAppendedPath(Telephony.CarrierIdentification.CONTENT_URI,
        resolver.update(Uri.withAppendedPath(Telephony.CarrierIdentification.All.CONTENT_URI,
                "update_db"), new ContentValues(), null, null);
    }
}
+86 −40
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.telephony.Rlog;
import android.telephony.ServiceState;
import android.telephony.SmsMessage;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Patterns;

@@ -3345,10 +3346,66 @@ public final class Telephony {
    }

    /**
     * Contains carrier identification information.
     * @hide
     * Contains carrier identification information for the current subscriptions.
     * @see SubscriptionManager#getActiveSubscriptionIdList()
     */
    public static final class CarrierIdentification implements BaseColumns {
        /**
         * Not instantiable.
         * @hide
         */
        private CarrierIdentification() {}

        /**
         * The {@code content://} style URI for this provider.
         */
        public static final Uri CONTENT_URI = Uri.parse("content://carrier_identification");

        /**
         * The authority string for the CarrierIdentification Provider
         * @hide
         */
        public static final String AUTHORITY = "carrier_identification";


        /**
         * Generates a content {@link Uri} used to receive updates on carrier identity change
         * on the given subscriptionId
         * <p>
         * Use this {@link Uri} with a {@link ContentObserver} to be notified of changes to the
         * carrier identity {@link TelephonyManager#getAndroidCarrierIdForSubscription()}
         * while your app is running. You can also use a {@link JobService} to ensure your app
         * is notified of changes to the {@link Uri} even when it is not running.
         * Note, however, that using a {@link JobService} does not guarantee timely delivery of
         * updates to the {@link Uri}.
         *
         * @param subscriptionId the subscriptionId to receive updates on
         * @return the Uri used to observe carrier identity changes
         */
        public static Uri getUriForSubscriptionId(int subscriptionId) {
            return CONTENT_URI.buildUpon().appendEncodedPath(
                    String.valueOf(subscriptionId)).build();
        }

        /**
         * A user facing carrier name.
         * @see TelephonyManager#getAndroidCarrierNameForSubscription()
         * <P>Type: TEXT </P>
         */
        public static final String NAME = "carrier_name";

        /**
         * A unique carrier id
         * @see TelephonyManager#getAndroidCarrierIdForSubscription()
         * <P>Type: INTEGER </P>
         */
        public static final String CID = "carrier_id";

        /**
         * Contains mappings between matching rules with carrier id for all carriers.
         * @hide
         */
        public static final class All implements BaseColumns {
            /**
             * Numeric operator ID (as String). {@code MCC + MNC}
             * <P>Type: TEXT </P>
@@ -3397,21 +3454,10 @@ public final class Telephony {
             */
            public static final String ICCID_PREFIX = "iccid_prefix";

        /**
         * User facing carrier name.
         * <P>Type: TEXT </P>
         */
        public static final String NAME = "carrier_name";

        /**
         * A unique carrier id
         * <P>Type: INTEGER </P>
         */
        public static final String CID = "carrier_id";

            /**
             * The {@code content://} URI for this table.
             */
        public static final Uri CONTENT_URI = Uri.parse("content://carrier_identification");
            public static final Uri CONTENT_URI = Uri.parse("content://carrier_identification/all");
        }
    }
}