diff options
author | twyen <twyen@google.com> | 2018-02-07 17:32:54 -0800 |
---|---|---|
committer | Eric Erfanian <erfanian@google.com> | 2018-02-09 21:58:03 +0000 |
commit | 981a3e9d384f7c12d1847b1922b1f26115b0f4fd (patch) | |
tree | dd60f1ac459e89c718c4f8ed28de2a38190f697c /java/com/android/voicemail/impl/CarrierIdentifier.java | |
parent | 83cd6282a94aea9a4efa766e1b7818e50b68921e (diff) |
Support GID1 for VVM configs
This CL allows VVM configs to be specifed with Group identifier, which takes precedence over configs with only MCC/MNC.
TelephonyVvmConfigManger is renamed to DialerVvmConfigManger. It was created when VVM was still in telephony, and need to separate itself from the CarrierConfig app.
Bug: 72666573
Test: Unit tests
PiperOrigin-RevId: 184924155
Change-Id: Ic71e99ed2b3015eed87dfb7e111538ff3b744206
Diffstat (limited to 'java/com/android/voicemail/impl/CarrierIdentifier.java')
-rw-r--r-- | java/com/android/voicemail/impl/CarrierIdentifier.java | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/java/com/android/voicemail/impl/CarrierIdentifier.java b/java/com/android/voicemail/impl/CarrierIdentifier.java new file mode 100644 index 000000000..82b6a2440 --- /dev/null +++ b/java/com/android/voicemail/impl/CarrierIdentifier.java @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2018 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.voicemail.impl; + +import android.annotation.TargetApi; +import android.content.Context; +import android.os.Build.VERSION_CODES; +import android.telecom.PhoneAccountHandle; +import android.telephony.TelephonyManager; +import com.google.auto.value.AutoValue; + +/** Identifies a carrier. */ +@AutoValue +@TargetApi(VERSION_CODES.O) +@SuppressWarnings("missingpermission") +public abstract class CarrierIdentifier { + + public abstract String mccMnc(); + + /** + * Group ID Level 1. Used to identify MVNO(Mobile Virtual Network Operators) who subleases other + * carrier's network and share their mccMnc. MVNO should have a GID1 different from the host. + */ + public abstract String gid1(); + + /** Builder for the matcher */ + @AutoValue.Builder + public abstract static class Builder { + + public abstract Builder setMccMnc(String mccMnc); + + public abstract Builder setGid1(String gid1); + + public abstract CarrierIdentifier build(); + } + + public static Builder builder() { + return new AutoValue_CarrierIdentifier.Builder().setGid1(""); + } + + public static CarrierIdentifier forHandle( + Context context, PhoneAccountHandle phoneAccountHandle) { + TelephonyManager telephonyManager = + context + .getSystemService(TelephonyManager.class) + .createForPhoneAccountHandle(phoneAccountHandle); + if (telephonyManager == null) { + throw new IllegalArgumentException("Invalid PhoneAccountHandle"); + } + String gid1 = telephonyManager.getGroupIdLevel1(); + if (gid1 == null) { + gid1 = ""; + } + + return builder().setMccMnc(telephonyManager.getSimOperator()).setGid1(gid1).build(); + } +} |