Я много искал это, но не получил хорошего результата.
Я пытаюсь сделать вызов из приложения, используя указанный 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)
..
.
ПОМОЩЬ :(