summaryrefslogtreecommitdiff
path: root/java/com/android/voicemail/impl/CarrierIdentifier.java
diff options
context:
space:
mode:
authortwyen <twyen@google.com>2018-02-07 17:32:54 -0800
committerEric Erfanian <erfanian@google.com>2018-02-09 21:58:03 +0000
commit981a3e9d384f7c12d1847b1922b1f26115b0f4fd (patch)
treedd60f1ac459e89c718c4f8ed28de2a38190f697c /java/com/android/voicemail/impl/CarrierIdentifier.java
parent83cd6282a94aea9a4efa766e1b7818e50b68921e (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.java71
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();
+ }
+}