MpAPP启动时如果当前未选中数据网络,则选择simcard1

hdrplus
Matthew 11 months ago
parent 73e95a3539
commit 6a4a367dd8

@ -110,6 +110,13 @@ public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
int activeSubId = SubscriptionManager.getActiveDataSubscriptionId();
if (activeSubId == -1) {
MicroPhotoContext.selectSimCard(getApplicationContext(), 1);
}
}
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
// getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

@ -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;
}
}

Loading…
Cancel
Save