2012-11-05 13 views
18

私はデュアルsimアンドロイド携帯電話を持っています。私はこのコードを使用して電話をかけています。2番目のsimから電話

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から呼び出されます(シムが好ましい)。 Sim2から電話をかけるにはどうすればいいですか?デュアルsim携帯電話を処理する方法はありますか?

答えて

30
これは、Motorola、マイクロマックス、HTCなどのデュアルSIMデバイスの広い範囲で動作しているようです

、サムスン

intent.putExtra("com.android.phone.extra.slot", 0); //For sim 1 

OR

intent.putExtra("com.android.phone.extra.slot", 1); //For sim 2 

とサムスンでは、これを試して動作しない場合S duosこれはうまく動作します。私たちは何の公式ドキュメントは、デュアルsimのサポートのために存在しないため、ヒット/トライアルモードに入るために必要があり、これらのもののため、残念ながら

intent.putExtra("simSlot", 0); //For sim 1 

OR

intent.putExtra("simSlot", 1); //For sim 2 

。デュアルSIMのAsus Fonepad 7 Android上

+0

感謝。他の携帯電話でもチェックしてみましょう。ところで、どうやってこれについて知りましたか?それはどこに文書化されていますか? –

+1

私のいくつかのランダムな試みの一つ –

+0

それは働いている!何ヶ月も待っている...乾杯! :D –

1

Androidは、デュアルSIMデバイスをサポートするAPIを提供していません。 SIMカードに関連するAndroidのAPIはデフォルトのSIMカード(通常SIM#1)のみをサポートしています。 Android上でデュアルSIMをサポートするのはハードウェア実装であるため、デバイスメーカーは独自のAPIを実装するか、ハードウェアコンポーネントをサポートするためのソースコードをカスタマイズする必要があります。 SDKをサポートするデュアルSIMについては、デバイスの製造元に問い合わせることができます。

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); 

ワーク5.0

関連する問題