我搜索并阅读了与此问题相似的所有问题和答案,但非解决了我的问题。
我想制作一个拨打号码的应用。但问题是系统弹出窗口要求用户选择SIM卡。 我希望系统和系统直接使用此SIM卡来处理这些信息(系统应通过哪个系统调用SIM而不要求用户选择SIM卡)。 所以我想在我的应用程序中使用此流程:
用户按下按钮 - >系统通过SIM 1
进行呼叫或
用户按下按钮 - >系统通过SIM 2进行呼叫
本网站上的大多数答案都说不可能完成这样的任务,
但是Trucaller正在使用这个类似的功能,您可以按下该号码,并在没有系统交互的情况下使用SIM 1或SIM 2直接拨打该号码。
如果您需要更多说明或我的问题中缺少某些内容,请与我们联系。
答案 0 :(得分:0)
试试这段代码:
//0 or 1
int simSelected = 0;
TelecomManager telecomManager = (TelecomManager) this.getSystemService(Context.TELECOM_SERVICE);
List<PhoneAccountHandle> phoneAccountHandleList = telecomManager.getCallCapablePhoneAccounts();
Intent intent = new Intent(Intent.ACTION_CALL).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("tel:" + "PHONE_NUMBER"));
intent.putExtra("com.android.phone.force.slot", true);
if (simSelected == 0) { //0 for sim1
intent.putExtra("com.android.phone.extra.slot", 0); //0 or 1 according to sim.......
if (phoneAccountHandleList != null && phoneAccountHandleList.size() > 0)
intent.putExtra("android.telecom.extra.PHONE_ACCOUNT_HANDLE", phoneAccountHandleList.get(0));
} else { //0 for sim1
intent.putExtra("com.android.phone.extra.slot", 1); //0 or 1 according to sim.......
if (phoneAccountHandleList != null && phoneAccountHandleList.size() > 1)
intent.putExtra("android.telecom.extra.PHONE_ACCOUNT_HANDLE", phoneAccountHandleList.get(1));
}
startActivity(intent);