向拨号器发送暂停

时间:2011-04-21 23:13:03

标签: android android-intent uri tel

Sending Pause and DTMF input in android类似,我试图将暂停字符“,”发送给拨号器。这适用于HTC Sense手机甚至Xoom,但不适用于Nexus One或T-Mobile G2等“库存体验”手机(我怀疑是摩托罗拉Droid)。

这些手机似乎有一个拨号器试图对数字进行漂亮格式化(即添加破折号)并在点击逗号字符时停止。有趣的是,它不会阻塞“p”字符,虽然它会删除“p”并继续添加数字。

这是ActivityManager看到的内容:

I/ActivityManager(   92): Starting activity: Intent { act=android.intent.action.DIAL dat=tel:8883333,444 cmp=com.android.contacts/.DialtactsActivity }

我也尝试了编码形式,“tel:8883333%2C444”,这些手机的行为没有区别。我已经尝试了“p”,如上所述,但是这些字符被删除导致拨号器888-333-3444填充不正确,而且我不确定“p”是否正确。

所以,问题是:有没有办法指定一个适用于大多数或所有Android拨号程序的暂停?

6 个答案:

答案 0 :(得分:17)

简短回答:使用本机拨号器看起来不太可能。

答案很长:

Android中的本机拨号程序使用以下代码提取您使用Intent传递给拨号程序的号码

if ("tel".equals(uri.getScheme())) {
  // Put the requested number into the input area
  String data = uri.getSchemeSpecificPart();
  setFormattedDigits(data, null);
  return true;
} 

setFormattedDigits方法中,数字会被转换:

  String dialString = PhoneNumberUtils.extractNetworkPortion(data);

查看extractNetworkPortion的文档,您会注意到它,“提取网络地址部分[网络地址部分所有部分直到DTMF控制数字分隔符(暂停或等待)< /强>

因此代码有意地删除了暂停字符及其后面的任何内容。我能想到的唯一选择是替换拨号器或使用ACTION_CALL操作而不是ACTION_DIAL。这将绕过拨号器,因此应谨慎使用。

答案 1 :(得分:4)

拨号暂停已使用逗号30年

如果Android手机与ITUT V.250兼容,ATS8 = 2应将逗号引起的延迟设置为2秒。 (它可能以某种方式设置为0)

ITUT是一个很好的标准组织,您可以免费下载他们的标准。

答案 2 :(得分:3)

来自android的latin ime source code

<!-- Pause is a comma. Check PhoneNumberUtils.java to see if this has changed. -->
<Key 
    android:codes="44"
    android:keyLabel="Pause" />

我不是百分百确定它是否公开,但您可以使用:

PhoneNumberUtils.PAUSE

答案 3 :(得分:0)

','是标准,但HTC在罗杰斯魔术中使用'p',你试过'p'吗? HTC Magic is using p

答案 4 :(得分:0)

这太可怕了,也很危险。商务人士在他们的手机上收到电话会议的电子邮件必须不断来回切换以获取号码。

让它像它应该的那样工作:

tel://+1-877-555-1212,,,2345678#

应拨打877号码暂停,然后拨入与会者代码并输入&#39; (#)在手机的任何地方选择。

就这么简单。这在Android中不起作用的事实是iPhone销售推销。

答案 5 :(得分:0)

供将来参考RFC-2806指定以以下格式存储电话号码:

<script>

    function handleKeyboardNav(e) {
        if (!e) e = window.event;
        var kc = e.keyCode;
        if (kc == 37) nslider.prev();
        if (kc == 39) nslider.next();
    }

    function bindKeyDownListener() {
        if (document.addEventListener)
            document.addEventListener("keydown", handleKeyboardNav, false);
        else if (document.attachEvent)
            el.attachEvent("onkeydown", handleKeyboardNav);
    }
         bindKeyDownListener();

</script>

tel:number;postd=post-dial 可以从number开始进行有意拨号,可以包含+-作为可视分隔符,.可以包含数字,大写字母AD,post-dial#*表示暂停,p表示等待。