我有一个双卡通Android手机。我正在使用此代码拨打电话:
private void callBack(String phone, Context context) {
Intent callIntent = new Intent(Intent.ACTION_CALL)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
callIntent.setData(Uri.parse("tel:" + phone));
context.startActivity(callIntent);
}
工作正常。但它总是从sim1调用(最好是sim)。如何从Sim2拨打电话?有没有办法处理双卡手机?
答案 0 :(得分:30)
这似乎适用于摩托罗拉,Micromax,HTC,三星等各种双卡设备
intent.putExtra("com.android.phone.extra.slot", 0); //For sim 1
OR
intent.putExtra("com.android.phone.extra.slot", 1); //For sim 2
如果不起作用试试这个,在三星S二重奏中这很好用。
intent.putExtra("simSlot", 0); //For sim 1
OR
intent.putExtra("simSlot", 1); //For sim 2
不幸的是,对于这些东西,我们必须进入命中/试用模式,因为没有官方文档可用于双SIM卡支持。
答案 1 :(得分:4)
final Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumberOrUssd));
final int simSlotIndex = 1; //Second sim slot
try {
final Method getSubIdMethod = SubscriptionManager.class.getDeclaredMethod("getSubId", int.class);
getSubIdMethod.setAccessible(true);
final long subIdForSlot = ((long[]) getSubIdMethod.invoke(SubscriptionManager.class, simSlotIndex))[0];
final ComponentName componentName = new ComponentName("com.android.phone", "com.android.services.telephony.TelephonyConnectionService");
final PhoneAccountHandle phoneAccountHandle = new PhoneAccountHandle(componentName, String.valueOf(subIdForSlot));
intent.putExtra("android.telecom.extra.PHONE_ACCOUNT_HANDLE", phoneAccountHandle);
} catch (Exception e) {
e.printStackTrace();
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
使用双SIM卡Asus Fonepad 7 Android 5.0
答案 2 :(得分:1)
Android不提供支持双SIM卡设备的API。 Android的SIM卡相关API仅支持默认SIM卡(通常为SIM#1)。它是在Android上支持双SIM卡的硬件实现,因此设备制造商必须实现自己的API或自定义源代码以支持其硬件组件。您可以与设备制造商联系以获取支持SDK的双SIM卡。