diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index c2c724fa0fdb4..7c9c0e81fbcaf 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -5521,6 +5521,44 @@ public class TelephonyManager { TelephonyProperties.PROPERTY_SIM_STATE, state); } + /** + * Set SIM card power state. Request is equivalent to inserting or removing the card. + * + * @param powerUp True if powering up the SIM, otherwise powering down + * + *
Requires Permission: + * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} + * + * @hide + **/ + public void setSimPowerState(boolean powerUp) { + setSimPowerStateForSlot(getDefaultSim(), powerUp); + } + + /** + * Set SIM card power state. Request is equivalent to inserting or removing the card. + * + * @param slotId SIM slot id + * @param powerUp True if powering up the SIM, otherwise powering down + * + *
Requires Permission:
+ * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
+ *
+ * @hide
+ **/
+ public void setSimPowerStateForSlot(int slotId, boolean powerUp) {
+ try {
+ ITelephony telephony = getITelephony();
+ if (telephony != null) {
+ telephony.setSimPowerStateForSlot(slotId, powerUp);
+ }
+ } catch (RemoteException e) {
+ Log.e(TAG, "Error calling ITelephony#setSimPowerStateForSlot", e);
+ } catch (SecurityException e) {
+ Log.e(TAG, "Permission error calling ITelephony#setSimPowerStateForSlot", e);
+ }
+ }
+
/**
* Set baseband version for the default phone.
*
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index e6a6178dbba6d..88daf64fb4ad0 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -1287,4 +1287,12 @@ interface ITelephony {
* @hide
*/
List