我使用了' Subscription Manager'和电话经理'但他们没有做我需要的事情。 https://developer.android.com/reference/android/telephony/SubscriptionManager.html https://developer.android.com/reference/android/telephony/TelephonyManager.html
我发现并检查了我的问题的3个部分中的2个。 这是一个工作代码,用于发送短信并在双卡手机中拨打电话:
// get info about sim slots
@TargetApi(Build.VERSION_CODES.LOLLIPOP_MR1)
public String getSubscriptionInfo(Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1)
return "Not supported";
StringBuilder sb = new StringBuilder();
SubscriptionManager sm = SubscriptionManager.from(context);
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
sb.append("\r\nSlots ")
.append(" TelephonyManager getPhoneCount: "+tm.getPhoneCount());
sb.append("\r\nSlots ")
.append(" SubscriptionManager getActiveSubscriptionInfoCount: "+sm.getActiveSubscriptionInfoCount())
.append(" max: "+sm.getActiveSubscriptionInfoCountMax())
.append("\r\n");
List<SubscriptionInfo> subscriptions = sm.getActiveSubscriptionInfoList();
if (subscriptions != null) {
for (SubscriptionInfo si : subscriptions) {
sb.append("SIM ")
.append(" slot: " + si.getSimSlotIndex())
.append(" id: " + si.getSubscriptionId())
.append(" iso: " + si.getCountryIso())
.append(" Mcc: " + si.getMcc())
.append(" Mnc: " + si.getMnc())
.append(" CarrierName: " + si.getCarrierName()).append(si.getDataRoaming() == SubscriptionManager.DATA_ROAMING_ENABLE ? " R" : "")
.append("\r\n");
}
}
if (sb.length() > 2)
sb.setLength(sb.length() - 2);
return sb.toString();
}
// outputs
// Slots TelephonyManager getPhoneCount: 2
// Slots SubscriptionManager getActiveSubscriptionInfoCount: 2 max: 2
// SIM slot: 0 id: 6 iso: ua Mcc: 255 Mnc: 1 CarrierName: Vodafone UA | MTS UKR
// SIM slot: 1 id: 1 iso: ua Mcc: 255 Mnc: 6 CarrierName: life:)
// send sms in dual sim mode
String phoneNumber = "+38063......"
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.SEND_SMS)
== PackageManager.PERMISSION_DENIED) {
Log.d("permission", "permission denied to SEND_SMS - requesting it");
String[] permissions = {Manifest.permission.SEND_SMS};
requestPermissions(permissions, 1);
}
}
// send sms
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.getSmsManagerForSubscriptionId(6).sendTextMessage(phoneNumber, null, "Message2", null, null);
Toast.makeText(getApplicationContext(),
"Your sms has successfully sent!",
Toast.LENGTH_LONG).show();
Log.i("Dual_sim_app", "Your sms has successfully sent!");
} catch (Exception e) {
Toast.makeText(getApplicationContext(),
"SMS faild, please try again later!",
Toast.LENGTH_LONG).show();
e.printStackTrace();
Log.i("Dual_sim_app", "SMS faild, please try again later!");
}
// call in dual sim mode
String phoneNumber = "+38063......"
Context context = this.getApplicationContext();
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, 1);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
Log.i("Dual_sim_app", "CALL_PHONE permission fail");
return;
}
Intent intentt = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber));
intentt.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intentt.putExtra("com.android.phone.force.slot", true);
intentt.putExtra("Cdma_Supp", true);
intentt.putExtra("simSlot", 0); //0 or 1 according to sim
context.startActivity(intentt);
现在我需要使用每个SIM卡的移动数据。怎么样?