Add new function: String getPhoneNumber(int simSlot)
Add new variant: int getTelephonyCallState(int simSlot)
diff --git a/build.gradle b/build.gradle
index 99839ee..5958ee9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -29,12 +29,12 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 31
+ compileSdk 34
defaultConfig {
applicationId "com.google.android.mobly.snippet.bundled"
- minSdkVersion 26
- targetSdkVersion 31
+ minSdk 26
+ targetSdk 34
versionCode 1
versionName "0.0.1"
setProperty("archivesBaseName", "mobly-bundled-snippets")
diff --git a/src/main/java/com/google/android/mobly/snippet/bundled/TelephonySnippet.java b/src/main/java/com/google/android/mobly/snippet/bundled/TelephonySnippet.java
index edcbf65..f7e5c8a 100644
--- a/src/main/java/com/google/android/mobly/snippet/bundled/TelephonySnippet.java
+++ b/src/main/java/com/google/android/mobly/snippet/bundled/TelephonySnippet.java
@@ -18,6 +18,8 @@
import android.content.Context;
import android.os.Build;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import androidx.test.platform.app.InstrumentationRegistry;
import com.google.android.mobly.snippet.Snippet;
@@ -27,10 +29,12 @@
public class TelephonySnippet implements Snippet {
private final TelephonyManager mTelephonyManager;
+ private final SubscriptionManager mSubscriptionManager;
public TelephonySnippet() {
Context context = InstrumentationRegistry.getInstrumentation().getContext();
mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+ mSubscriptionManager = (SubscriptionManager) context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
}
@Rpc(description = "Gets the line 1 phone number.")
@@ -38,6 +42,22 @@
return mTelephonyManager.getLine1Number();
}
+ @Rpc(description = "Gets phone number for the simSlot (slot# start from 0, only valid for API level > 32)."
+ + " API level <33 will always return phone number for simSlotIndex = 0")
+ public String getPhoneNumber(int simSlot) {
+ String thisNumber = "";
+
+ if (Build.VERSION.SDK_INT < 33) {
+ thisNumber = mTelephonyManager.getLine1Number();
+ } else {
+ SubscriptionInfo mSubscriptionInfo = mSubscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(simSlot);
+ if (mSubscriptionInfo != null) {
+ thisNumber = mSubscriptionManager.getPhoneNumber(mSubscriptionInfo.getSubscriptionId());
+ }
+ }
+ return thisNumber;
+ }
+
@Rpc(description = "Returns the unique subscriber ID, for example, the IMSI for a GSM phone.")
public String getSubscriberId() {
return mTelephonyManager.getSubscriberId();
@@ -57,6 +77,28 @@
@Rpc(
description =
+ "Gets the call state for the simSlot (slot# start from 0, only valid for API level > 30). Call state values are"
+ + "0: IDLE, 1: RINGING, 2: OFFHOOK.")
+ public int getTelephonyCallState(int simSlot) {
+ int thisState = -1;
+
+ if (Build.VERSION.SDK_INT < 31) {
+ thisState = mTelephonyManager.getCallState();
+ } else {
+ SubscriptionInfo mSubscriptionInfo = mSubscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(simSlot);
+ if (mSubscriptionInfo != null) {
+ thisState =
+ mTelephonyManager
+ .createForSubscriptionId(mSubscriptionInfo.getSubscriptionId())
+ .getCallStateForSubscription();
+ }
+ }
+
+ return thisState;
+ }
+
+ @Rpc(
+ description =
"Returns a constant indicating the radio technology (network type) currently"
+ "in use on the device for data transmission.")
public int getDataNetworkType() {