我一直在寻找这个但是没有取得好成绩 我正在尝试使用指定的sim来从应用内部拨打电话 字符串x是这样的:“OK> message> * 111> 1>>>”
public void test_call(String x) {
String simSlotName[] = {
"extra_asus_dial_use_dualsim",
"com.android.phone.extra.slot",
"slot",
"simslot",
"sim_slot",
"subscription",
"Subscription",
"phone",
"com.android.phone.DialingMode",
"simSlot",
"slot_id",
"simId",
"simnum",
"phone_type",
"slotId",
"slotIdx"
};
String encodedHash = Uri.encode("#");
String[] data = x.split(">");
if (!data[4].equals("1") && !data[4].equals("0")) {
Log.d("data :", "E:" + data[4]);
G.is_busy = 0;
return;
}
String ussd = data[3] + encodedHash;
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + ussd));
Log.d("Sim",data[4]);
intent.putExtra("com.android.phone.force.slot", true);
for (String s : simSlotName) {
Log.d("S","s :"+s+"="+data[4]);
intent.putExtra(s, data[4]); // 0 for sim1 , 1 for sim2
}
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this,
"Call failed, please try again later.",
Toast.LENGTH_SHORT).show();
return;
}
//this.startActivityForResult(intent,1);
startActivity(intent);
G.needscall = "";
}
这是正常工作除了它总是使用sim 0,即使移动设备中的默认SIM卡是SIM 1! (Android 5.1.1)
这只是使用早期版本中的默认SIM
删除此行
intent.putExtra(s, data[4]);
使应用程序使用默认的SIM卡拨打(5.1.1)
..
。
帮助:(
答案 0 :(得分:0)
使用huawei gr5 2017(Android 6.0)来解决这个问题,我发现内置的True Caller应用程序无法从指定的SIM卡拨号。它只使用默认的SIM卡。 所以如果应用程序不是系统应用程序,我想这无法解决。