diff options
| -rw-r--r-- | api/current.txt | 7 | ||||
| -rw-r--r-- | services/core/java/com/android/server/updates/CarrierIdInstallReceiver.java | 39 | ||||
| -rw-r--r-- | telephony/java/android/telephony/Telephony.java | 126 |
3 files changed, 132 insertions, 40 deletions
diff --git a/api/current.txt b/api/current.txt index be5a543edb94..4762095a6617 100644 --- a/api/current.txt +++ b/api/current.txt @@ -35551,6 +35551,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"; diff --git a/services/core/java/com/android/server/updates/CarrierIdInstallReceiver.java b/services/core/java/com/android/server/updates/CarrierIdInstallReceiver.java new file mode 100644 index 000000000000..045081679d81 --- /dev/null +++ b/services/core/java/com/android/server/updates/CarrierIdInstallReceiver.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.updates; + +import android.content.ContentResolver; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.provider.Telephony; +import android.util.Log; + +public class CarrierIdInstallReceiver extends ConfigUpdateInstallReceiver { + + public CarrierIdInstallReceiver() { + super("/data/misc/carrierid", "carrier_list.pb", "metadata/", "version"); + } + + @Override + protected void postInstall(Context context, Intent intent) { + ContentResolver resolver = context.getContentResolver(); + resolver.update(Uri.withAppendedPath(Telephony.CarrierIdentification.All.CONTENT_URI, + "update_db"), new ContentValues(), null, null); + } +} diff --git a/telephony/java/android/telephony/Telephony.java b/telephony/java/android/telephony/Telephony.java index 8c4572474e6b..63263bd37206 100644 --- a/telephony/java/android/telephony/Telephony.java +++ b/telephony/java/android/telephony/Telephony.java @@ -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,73 +3346,118 @@ 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 { /** - * Numeric operator ID (as String). {@code MCC + MNC} - * <P>Type: TEXT </P> - */ - public static final String MCCMNC = "mccmnc"; - - /** - * Group id level 1 (as String). - * <P>Type: TEXT </P> - */ - public static final String GID1 = "gid1"; - - /** - * Group id level 2 (as String). - * <P>Type: TEXT </P> - */ - public static final String GID2 = "gid2"; - - /** - * Public Land Mobile Network name. - * <P>Type: TEXT </P> + * Not instantiable. + * @hide */ - public static final String PLMN = "plmn"; + private CarrierIdentification() {} /** - * Prefix xpattern of IMSI (International Mobile Subscriber Identity). - * <P>Type: TEXT </P> + * The {@code content://} style URI for this provider. */ - public static final String IMSI_PREFIX_XPATTERN = "imsi_prefix_xpattern"; + public static final Uri CONTENT_URI = Uri.parse("content://carrier_identification"); /** - * Service Provider Name. - * <P>Type: TEXT </P> + * The authority string for the CarrierIdentification Provider + * @hide */ - public static final String SPN = "spn"; + public static final String AUTHORITY = "carrier_identification"; - /** - * Prefer APN name. - * <P>Type: TEXT </P> - */ - public static final String APN = "apn"; /** - * Prefix of Integrated Circuit Card Identifier. - * <P>Type: TEXT </P> + * 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 final String ICCID_PREFIX = "iccid_prefix"; + public static Uri getUriForSubscriptionId(int subscriptionId) { + return CONTENT_URI.buildUpon().appendEncodedPath( + String.valueOf(subscriptionId)).build(); + } /** - * User facing carrier name. + * 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"; /** - * The {@code content://} URI for this table. + * Contains mappings between matching rules with carrier id for all carriers. + * @hide */ - public static final Uri CONTENT_URI = Uri.parse("content://carrier_identification"); + public static final class All implements BaseColumns { + /** + * Numeric operator ID (as String). {@code MCC + MNC} + * <P>Type: TEXT </P> + */ + public static final String MCCMNC = "mccmnc"; + + /** + * Group id level 1 (as String). + * <P>Type: TEXT </P> + */ + public static final String GID1 = "gid1"; + + /** + * Group id level 2 (as String). + * <P>Type: TEXT </P> + */ + public static final String GID2 = "gid2"; + + /** + * Public Land Mobile Network name. + * <P>Type: TEXT </P> + */ + public static final String PLMN = "plmn"; + + /** + * Prefix xpattern of IMSI (International Mobile Subscriber Identity). + * <P>Type: TEXT </P> + */ + public static final String IMSI_PREFIX_XPATTERN = "imsi_prefix_xpattern"; + + /** + * Service Provider Name. + * <P>Type: TEXT </P> + */ + public static final String SPN = "spn"; + + /** + * Prefer APN name. + * <P>Type: TEXT </P> + */ + public static final String APN = "apn"; + + /** + * Prefix of Integrated Circuit Card Identifier. + * <P>Type: TEXT </P> + */ + public static final String ICCID_PREFIX = "iccid_prefix"; + + /** + * The {@code content://} URI for this table. + */ + public static final Uri CONTENT_URI = Uri.parse("content://carrier_identification/all"); + } } } |