0

我正在实现一个 Android 应用程序,它允许用户通过按按钮从我的应用程序中拨打一个号码来购买东西。在单 SIM 卡设备中它工作得很好,但在双卡设备中,当我运行我的应用程序并单击“购买按钮”时,会自动打开一个弹出窗口,询问我要使用哪个 SIM 卡拨号(我不必编写此操作的代码,它由我的设备自动完成。此外,当我通常使用设备的默认电话应用程序呼叫朋友时,此弹出窗口会自动打开,询问我想使用哪个 SIM 卡拨号,然后选择一个 SIM 卡开始呼叫),但如果我的应用程序在选择 SIM 后,它不起作用,它不会开始拨号。但它开始拨入单个 sim 设备。

我已<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>正确添加,并且我的代码在单个 SIM 设备上运行良好。

所以有什么问题?为什么它不适用于双 SIM 卡设备?

我的代码:

Button button1maina = (Button) findViewById(R.id.Button03);

        button1maina.setOnClickListener(new OnClickListener() {
     @Override
         public void onClick(View v) {

         Intent callIntent = new Intent(Intent.ACTION_CALL);
         callIntent.setData(Uri.parse("tel:" + "*566%23"));;
         startActivity(callIntent);  

        }
     });
4

2 回答 2

3

您必须指定 simcard 才能启动 Intent 活动。首先,通过此链接检查手机是否为 Dual Sim:https ://stackoverflow.com/a/17499889/3743245

之后,尝试询问用户他/她将使用哪个 SIM 卡并传递该信息,如下所示:

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

或者

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

如果不起作用,请尝试以下操作:

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

或者

intent.putExtra("simSlot", 1); //For sim 2
于 2015-09-16T17:41:22.523 回答
0

只需编写剩下的这两行代码,这将由系统自动完成,您不必担心单/双 SIM 卡

Intent callIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("tel:"+"999999");
            startActivity(callIntent);
        } 

有关更多详细信息,请参阅官方指南http://developer.android.com/reference/android/content/Intent.html

于 2015-09-16T18:00:11.140 回答