Android 安卓代码拨出暂停号码

Android 安卓代码拨出暂停号码,android,Android,我正在编写一些应用程序来访问我的语音邮件。我有一个接入号码,当我呼叫它时,我必须等待6秒钟,然后输入我的PIN。Android仍然没有发送DTMF的API,所以我必须在呼叫号码中使用暂停 我搜索了互联网,发现我可以输入,(逗号)或p暂停一秒钟。但在Android emulator上,这不起作用,例如,当使用逗号时,我拨,,,,,,而在emulator上,我只看到拨了。当使用p时,我看到访问号和PIN连接在一起 如何暂停?也有同样的问题这里是我的解决方案(在Android4.0.1上测试): /*

我正在编写一些应用程序来访问我的语音邮件。我有一个接入号码,当我呼叫它时,我必须等待6秒钟,然后输入我的PIN。Android仍然没有发送DTMF的API,所以我必须在呼叫号码中使用暂停

我搜索了互联网,发现我可以输入
(逗号)或
p
暂停一秒钟。但在Android emulator上,这不起作用,例如,当使用逗号时,我拨
,,,,,
,而在emulator上,我只看到拨了
。当使用
p
时,我看到访问号和PIN连接在一起


如何暂停?

也有同样的问题这里是我的解决方案(在Android4.0.1上测试):

/**
*使用DTMF字符拨打号码
*注意:拨号时,设备拨号器上仅显示初始号码
*例如:拨号(“*6900,,,3”)将在设备拨号器上仅显示*6900(但其余部分也将被处理)
*@param编号
*/
公用无效拨号(字符串号码){
试一试{
number=新字符串(number.trim().replace(“,“%20”).replace(“&”,“%26”)
.replace(“,”,“%2c”)。replace(“,“%28”)。replace(“),“%29”)
.replace(“!”,“%21”)。replace(“=”,“%3D”)。replace(“,“%3E”)。replace(“#”,“%23”)。replace(“$”,“%24”)
.replace(“,“%27”)。replace(“*”,“%2A”)。replace(“-”,“%2D”)
.replace(“.”,“%2E”)。replace(“/”,“%2F”)。replace(“:”,“%3A”)
.replace(“;”,%3B”)。replace(“?”,%3F”)。replace(“@”,%40”)
.replace(“[”,%5B”)。replace(“\\”,%5C”)。replace(“],%5D”)
.replace(“\”,“%5F”)。replace(“`,“%60”)。replace(“{”,“%7B”)
.replace(“|”和“%7C”)。replace(“}”和“%7D”);
Uri=Uri.parse(“电话:”+Uri.encode(数字));
意图=新意图(Intent.ACTION\u调用,uri);
星触觉(意向);
}捕获(例外e){
//getAlertDialog().setMessage(“无效数字”);
e、 printStackTrace();
}
}

也有同样的问题这里是我的解决方案(在Android4.0.1上测试):

/**
*使用DTMF字符拨打号码
*注意:拨号时,设备拨号器上仅显示初始号码
*例如:拨号(“*6900,,,3”)将在设备拨号器上仅显示*6900(但其余部分也将被处理)
*@param编号
*/
公用无效拨号(字符串号码){
试一试{
number=新字符串(number.trim().replace(“,“%20”).replace(“&”,“%26”)
.replace(“,”,“%2c”)。replace(“,“%28”)。replace(“),“%29”)
.replace(“!”,“%21”)。replace(“=”,“%3D”)。replace(“,“%3E”)。replace(“#”,“%23”)。replace(“$”,“%24”)
.replace(“,“%27”)。replace(“*”,“%2A”)。replace(“-”,“%2D”)
.replace(“.”,“%2E”)。replace(“/”,“%2F”)。replace(“:”,“%3A”)
.replace(“;”,%3B”)。replace(“?”,%3F”)。replace(“@”,%40”)
.replace(“[”,%5B”)。replace(“\\”,%5C”)。replace(“],%5D”)
.replace(“\”,“%5F”)。replace(“`,“%60”)。replace(“{”,“%7B”)
.replace(“|”和“%7C”)。replace(“}”和“%7D”);
Uri=Uri.parse(“电话:”+Uri.encode(数字));
意图=新意图(Intent.ACTION\u调用,uri);
星触觉(意向);
}捕获(例外e){
//getAlertDialog().setMessage(“无效数字”);
e、 printStackTrace();
}
}
    /**
 * Dials a number with DTMF chars
 * Note: When the number is dialed, only the initial number is displayed on the device dialer
 * For example: dial("*6900,,,3") will display only *6900 on the device dialer (but the rest will also be processed)
 * @param number
 */
public void dial(String number) {
    try {
        number = new String(number.trim().replace(" ", "%20").replace("&", "%26")
                .replace(",", "%2c").replace("(", "%28").replace(")", "%29")
                .replace("!", "%21").replace("=", "%3D").replace("<", "%3C")
                .replace(">", "%3E").replace("#", "%23").replace("$", "%24")
                .replace("'", "%27").replace("*", "%2A").replace("-", "%2D")
                .replace(".", "%2E").replace("/", "%2F").replace(":", "%3A")
                .replace(";", "%3B").replace("?", "%3F").replace("@", "%40")
                .replace("[", "%5B").replace("\\", "%5C").replace("]", "%5D")
                .replace("_", "%5F").replace("`", "%60").replace("{", "%7B")
                .replace("|", "%7C").replace("}", "%7D"));

        Uri uri = Uri.parse("tel:"+ Uri.encode(number));
        Intent intent = new Intent(Intent.ACTION_CALL, uri);
        startActivity(intent);

    } catch (Exception e) {
        //getAlertDialog().setMessage("Invalid number");
        e.printStackTrace();
    }
}