|
|
|
@ -4,9 +4,13 @@ import android.app.ActivityManager;
|
|
|
|
|
import android.content.Context;
|
|
|
|
|
import android.content.Intent;
|
|
|
|
|
import android.content.pm.PackageManager;
|
|
|
|
|
import android.os.Build;
|
|
|
|
|
import android.os.Environment;
|
|
|
|
|
import android.os.storage.StorageManager;
|
|
|
|
|
import android.telephony.SubscriptionManager;
|
|
|
|
|
import android.telephony.TelephonyManager;
|
|
|
|
|
import android.text.TextUtils;
|
|
|
|
|
import android.util.Log;
|
|
|
|
|
|
|
|
|
|
import com.dev.devapi.api.SysApi;
|
|
|
|
|
|
|
|
|
@ -492,5 +496,59 @@ public class MicroPhotoContext {
|
|
|
|
|
return versionCode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static boolean selectSimCard(final Context context, int num) {
|
|
|
|
|
|
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
|
|
|
|
|
|
|
|
|
SubscriptionManager subscriptionManager = (SubscriptionManager) context.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(context, subIds[0]);
|
|
|
|
|
// logger.info("Switched To SimCard: " + Integer.toString(num));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
SysApi.selectSimCard4Data(context, num);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void setDefaultDataSubId(final Context context, int subId) {
|
|
|
|
|
SubscriptionManager subscriptionManager = (SubscriptionManager) context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
Method method = subscriptionManager.getClass().getDeclaredMethod("setDefaultDataSubId", int.class);
|
|
|
|
|
try {
|
|
|
|
|
method.invoke(subscriptionManager, subId);
|
|
|
|
|
} catch (Exception ex) {
|
|
|
|
|
ex.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
|
|
|
telephonyManager.setDataEnabled(true);
|
|
|
|
|
}
|
|
|
|
|
Method method1 = telephonyManager.getClass().getDeclaredMethod("setDataEnabled", boolean.class);
|
|
|
|
|
method1.invoke(telephonyManager, true);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static int getDefaultDataSubId(final Context context) {
|
|
|
|
|
SubscriptionManager subscriptionManager = (SubscriptionManager) context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
|
|
|
|
|
try {
|
|
|
|
|
Method method = subscriptionManager.getClass().getDeclaredMethod("getDefaultDataSubscriptionId");
|
|
|
|
|
return (int) method.invoke(subscriptionManager);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|