From 6d036c9fd9cad9e19073006d4d9988b4f648a83f Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 12 Jun 2024 14:54:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96simcard=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mpmaster/src/main/AndroidManifest.xml | 2 + .../java/com/xypower/mpmaster/AppMaster.java | 17 +++---- .../com/xypower/mpmaster/MainActivity.java | 7 +++ .../com/xypower/mpmaster/MpMasterService.java | 50 ++++++++++++++++++- .../src/main/res/layout/activity_main.xml | 9 ++++ 5 files changed, 74 insertions(+), 11 deletions(-) diff --git a/mpmaster/src/main/AndroidManifest.xml b/mpmaster/src/main/AndroidManifest.xml index 06ef67fd..ab74ab92 100644 --- a/mpmaster/src/main/AndroidManifest.xml +++ b/mpmaster/src/main/AndroidManifest.xml @@ -12,6 +12,8 @@ + + = Build.VERSION_CODES.R) { + + SubscriptionManager subscriptionManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); + int activeSubId = SubscriptionManager.getActiveDataSubscriptionId(); + int activeSlotIdx = SubscriptionManager.getSlotIndex(activeSubId); + if (activeSlotIdx == (num - 1)) { + logger.info("Active SimCard is already " + Integer.toString(num)); + } else { + int subIds[] = subscriptionManager.getSubscriptionIds(num - 1); + if (subIds != null && subIds.length > 0) { + setDefaultDataSubId(subIds[0]); + logger.info("Switched To SimCard: " + Integer.toString(num)); + } + } + } else { + SysApi.selectSimCard4Data(context, num); + } + } + + private void setDefaultDataSubId(int subId) { + SubscriptionManager subscriptionManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); + try { + + Method method = subscriptionManager.getClass().getDeclaredMethod("setDefaultDataSubId", int.class); + method.invoke(subscriptionManager, subId); + TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); + telephonyManager.setDataEnabled(true); + Method method1 = telephonyManager.getClass().getDeclaredMethod("setDataEnabled", boolean.class); + method1.invoke(telephonyManager, true); + } catch (Exception e) { + // Log.e(TAG, "wjz debug setDefaultDataSubId: error is " + e.getMessage()); + e.printStackTrace(); + } + } + + private int getDefaultDataSubId() { + SubscriptionManager subscriptionManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); + try { + Method method = subscriptionManager.getClass().getDeclaredMethod("getDefaultDataSubscriptionId"); + return (int) method.invoke(subscriptionManager); + } catch (Exception e) { + Log.e(TAG, "wjz debug getDefaultDataSubId: error is " + e.getMessage()); + } + return 0; } public native static int getInt(int cmd); diff --git a/mpmaster/src/main/res/layout/activity_main.xml b/mpmaster/src/main/res/layout/activity_main.xml index 7240e2e4..df48f43e 100644 --- a/mpmaster/src/main/res/layout/activity_main.xml +++ b/mpmaster/src/main/res/layout/activity_main.xml @@ -113,4 +113,13 @@ app:layout_constraintStart_toEndOf="@+id/sendsms" app:layout_constraintTop_toTopOf="@+id/sendsms" /> +