2014-08-27 28 views
15

belirtilen bir SIM kullanarak çağrı ve bunu biliyorum geldi. yap Son birkaç gündür bu aradık Çift SIM Cihazı

"Çift SIM kutudan çıktığı Android'de desteklenmez

Öyle üreticiler tarafından yapılan özel bir değişiklik ve bunu denetlemek için herkese açık bir API yok. "

Aşağıdaki bağlantıda verilen bir çözüm var ama benim telefonumda çalışmıyor Samsung Galaxy S4 Mini.

Call from second sim

Ben de çok bilgilendirici buldum bu bağlantıyı bulundu.

http://www.devlper.com/2010/06/using-android-telephonymanager/

Şimdi aşağıdaki kodu kullanarak, bunu çalışma yapmak için şanslı bir şans olabileceğini biliyoruz:

Intent callIntent = new Intent(Intent.ACTION_CALL) 
       .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     callIntent.setData(Uri.parse("tel:" + phone)); 
     context.startActivity(callIntent); 
callIntent.putExtra("com.android.phone.extra.slot", 0); //For sim 1 
and 
callIntent.putExtra("com.android.phone.extra.slot", 1); //For sim 2 

Bundan emin değilim, ama bir sorum var .

  1. Güncel Ağı
  2. Daima
  3. SIM 1
  4. sorun: Sesli Arama için tercih edilen bir SIM kart seçmek zorunda olduğunda SIM Kart Yöneticisi bölümünde Ayarlar

    , ben dört seçenek olsun
  5. SIM 2

sonra hep bir SIM Kart seçtiğiniz için soruluyor arama yapmadan önce daima seçeneğini sor tercih , Çağrı yapmak için bir İletişim Kutusu'nda görüntülenir. Sorum şu: Uygulamamda bu şeyi kullanarak arama yapmak için bir tuşa bastığım ama her zaman Bana Her zaman sor seçeneğini belirlediğimde yaptığım gibi bana sorar.

Üzgünüm, bu soruyu çok uzun yaptım, ancak gerekli olduğunu düşünüyorum. Lütfen yardım edin ve şimdiden teşekkürler.

DÜZENLEME:

Bunu nasıl elde edebilirsiniz, her I (Ayarlar Her zaman seçeneğini sor benzer Kind of) herhangi bir düğmeye basarak: Select SIM Dialog Box

+1

Bu sorun için bir çözüm buldunuz mu? –

+0

@GauravVachhani Üzgünüm kardeşim, bu sorunun evrensel çözümü olacak hiçbir şey bulamadı. Şimdilik, herhangi bir şey olmadığı açıktır. –

+0

Benzer işlevsellik gerektiren bir uygulama üzerinde çalışıyorum .. Bunun için herhangi bir çözüm buldunuz mu? –

cevap

7

Kodu:

private final static 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" 
}; 


Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "any number")); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    intent.putExtra("com.android.phone.force.slot", true); 
    intent.putExtra("Cdma_Supp", true); 
    //Add all slots here, according to device.. (different device require different key so put all together) 
    for (String s : simSlotName) 
     intent.putExtra(s, 0); //0 or 1 according to sim....... 

    //works only for API >= 21 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
     intent.putExtra("android.telecom.extra.PHONE_ACCOUNT_HANDLE", (Parcelable) " here You have to get phone account handle list by using telecom manger for both sims:- using this method getCallCapablePhoneAccounts()"); 

    context.startActivity(intent); 
+0

Jio Lyf Wind 2 cep telefonum var, sanırım bu listeye yeni bir isim verdim. Bu listeyi nasıl aldığınızı veya herhangi bir kodu ayarlayarak bu ismi nasıl aldığınızı anlatabilir misiniz? –

2
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:" + number)); 
     intent.putExtra("com.android.phone.force.slot", true); 
     intent.putExtra("Cdma_Supp", true); 
     if (simselected== 0) { //0 for sim1 
      for (String s : simSlotName) 
       intent.putExtra(s, 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 {  1 for sim2 
      for (String s : simSlotName) 
       intent.putExtra(s, 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); 
+0

SIM 0 seçili olarak nasıl kontrol edebilirim? –

+0

Sim1 için özel iletişim kutusunu yapıyorum. Ve sim 2 ve sim seçin –