4

通話用のデフォルト sim を設定できません。ACTION_CALL インテントを送信する前にシステム設定を変更してデフォルトのシムを変更しようとしていますが、シム選択ダイアログが表示されるたびに

public class CallUtil {

public static void sendCallIntent(Context context, String number) {
    Intent intent = new Intent(Intent.ACTION_CALL)
            .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setData(Uri.parse("tel:" + number));

    setDefaultSim(context);
    if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
        return;
    }
    context.startActivity(intent);
}

public static void setDefaultSim(Context context) {
    try {
        ContentValues val = new ContentValues();
        List<Integer> sims = getInsertedSIMIds(context);
        val.put("value", sims.get(0));
        context.getContentResolver().update(Uri.parse("content://settings/system"), val, "name='voice_call_sim_setting'", null);

    } catch (Exception e) {

    }

}

public static List<Integer> getInsertedSIMIds(Context context){
    List<Integer> list = new ArrayList<Integer>();
    SubscriptionManager  sm=(SubscriptionManager)context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
    for ( SubscriptionInfo sub: sm.getActiveSubscriptionInfoList()) {
        list.add(sub.getSimSlotIndex());
    }
    return list;
}

}

私の意図は、Android 5.1 API を使用して特定の sim を介して呼び出しを行うことです。代替アプローチがあれば教えてください。

4

3 に答える 3

0

dual-sim は Android SDK の公式サポートではありません。logcat をキャプチャし、システム ダイヤラーで特定の sim 呼び出しを行い、SIM カードに関するインテント フォーマットを調べることをお勧めします。

アップデート

API レベル 22 以降、sdk はデュアル simリンクをサポートしていますが、SDK ドキュメントでデュアル sim の ACTION_CALL インテント形式が見つかりません。

于 2016-01-19T09:31:50.680 に答える