【问题标题】:Intent.ACTION_CALL is not working when a pop up window opens to select my account当弹出窗口打开以选择我的帐户时,Intent.ACTION_CALL 不起作用
【发布时间】:2015-09-16 16:30:36
【问题描述】:

我正在实现一个 Android 应用程序,该应用程序允许用户通过按按钮从我的应用程序中拨打号码来购买东西。在单 SIM 卡设备中它工作得很好,但在双 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);  

        }
     });

【问题讨论】:

    标签: android android-intent phone-call android-dialer


    【解决方案1】:

    您必须指定 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
    

    【讨论】:

      【解决方案2】:

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

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

      更多详情请参考官方指南http://developer.android.com/reference/android/content/Intent.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-20
        相关资源
        最近更新 更多