summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/system-current.txt1
-rw-r--r--telephony/java/android/telephony/SubscriptionManager.java38
-rwxr-xr-xtelephony/java/com/android/internal/telephony/ISub.aidl2
3 files changed, 40 insertions, 1 deletions
diff --git a/api/system-current.txt b/api/system-current.txt
index c4ae9a3dd6b4..7a4baf1cbec1 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -8657,6 +8657,7 @@ package android.telephony {
}
public class SubscriptionManager {
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean canDisablePhysicalSubscription();
method public java.util.List<android.telephony.SubscriptionInfo> getAvailableSubscriptionInfoList();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getEnabledSubscriptionId(int);
method @NonNull public static android.content.res.Resources getResourcesForSubId(@NonNull android.content.Context, int);
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index 43d9c1102b1a..e9ce7e3560c6 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -3110,7 +3110,11 @@ public class SubscriptionManager {
}
/**
- * Enables or disables a subscription. This is currently used in the settings page.
+ * Enables or disables a subscription. This is currently used in the settings page. It will
+ * fail and return false if operation is not supported or failed.
+ *
+ * To disable an active subscription on a physical (non-Euicc) SIM,
+ * {@link #canDisablePhysicalSubscription} needs to be true.
*
* <p>
* Permissions android.Manifest.permission.MODIFY_PHONE_STATE is required
@@ -3142,6 +3146,38 @@ public class SubscriptionManager {
}
/**
+ * Whether it's supported to disable / re-enable a subscription on a physical (non-euicc) SIM.
+ *
+ * Physical SIM refers non-euicc, or aka non-programmable SIM.
+ *
+ * It provides whether a physical SIM card can be disabled without taking it out, which is done
+ * via {@link #setSubscriptionEnabled(int, boolean)} API.
+ *
+ * Requires Permission: READ_PRIVILEGED_PHONE_STATE.
+ *
+ * @return whether can disable subscriptions on physical SIMs.
+ *
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
+ public boolean canDisablePhysicalSubscription() {
+ if (VDBG) {
+ logd("canDisablePhysicalSubscription");
+ }
+ try {
+ ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub"));
+ if (iSub != null) {
+ return iSub.canDisablePhysicalSubscription();
+ }
+ } catch (RemoteException ex) {
+ // ignore it
+ }
+
+ return false;
+ }
+
+ /**
* DO NOT USE.
* This API is designed for features that are not finished at this point. Do not call this API.
* @hide
diff --git a/telephony/java/com/android/internal/telephony/ISub.aidl b/telephony/java/com/android/internal/telephony/ISub.aidl
index 151aae89a3ff..c5d58ac24904 100755
--- a/telephony/java/com/android/internal/telephony/ISub.aidl
+++ b/telephony/java/com/android/internal/telephony/ISub.aidl
@@ -298,4 +298,6 @@ interface ISub {
boolean setAlwaysAllowMmsData(int subId, boolean alwaysAllow);
int getActiveDataSubscriptionId();
+
+ boolean canDisablePhysicalSubscription();
}