0

语境 :

我正在开发一个 android 拨号器应用程序(电话应用程序)通过哪个应用程序拨号盘完成应用程序呼叫管理。

这是我的拨号盘:

拨号器

你看到 *123# 被输入

模拟人生选择:

模拟人生选择

Sim 选择底部对话框

底部对话框中正在运行什么代码:

Log.d("CALL", "to :" + dialNumber + ".. \n");
intent.setData(Uri.parse("tel:"+dialNumber));
intent.putExtra("com.android.phone.force.slot", true);

Log.d("CALL", "ACCOUNTS :" + phoneAccountHandleList.size() + ".. \n");

if (sim == 0)
{
    intent.putExtra("com.android.phone.extra.slot", 0);
    if (phoneAccountHandleList != null && phoneAccountHandleList.size() > 0)
    {
        intent.putExtra("android.telecom.extra.PHONE_ACCOUNT_HANDLE", phoneAccountHandleList.get(0));
    }
 }
 else
 {
    intent.putExtra("com.android.phone.extra.slot", 1);
    if (phoneAccountHandleList != null && phoneAccountHandleList.size() > 1)
    {
        intent.putExtra("android.telecom.extra.PHONE_ACCOUNT_HANDLE", phoneAccountHandleList.get(1));
    }

 }

 context.startActivity(intent);

InCallService 管理呼叫:

在 InCallService 中,我管理呼叫。如果添加了呼叫,那么我从下面的代码启动 CallActivity

callType = CallType.CALL_OUT;

Call.Details details = call.getDetails();
String CallingNumber = details.getHandle().getSchemeSpecificPart();
CallActivity.start(this, CallingNumber, callType, false);

我的通话活动:

通话活动

我有什么问题:

  1. 你可以在上面看到我从拨号器拨打*123#,但它只是拨打*123
  2. 它一定没有启动呼叫活动,而是它必须以 MMI CODE 的形式请求它

任何帮助或指导表示赞赏,在此先感谢您。

4

1 回答 1

0

我认为你可以这样做:

String encode_hash = Uri.encode("#");
intent.setData(Uri.parse("tel:"+dialNumber + encode_hash));
于 2020-09-17T14:21:47.823 回答