pfo*_*han 28 android uri android-intent tel
与在Android中发送暂停和DTMF输入类似,我正在尝试将暂停字符","发送到拨号器.这适用于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 }
Run Code Online (Sandbox Code Playgroud)
我也尝试了编码形式,"tel:8883333%2C444",这些手机的行为没有区别.我已经尝试了"p",如上所述,但是这些字符被删除导致拨号器888-333-3444填充不正确,并且我不确定"p"是否正确.
所以,问题是:有没有办法指定一个适用于大多数或所有Android拨号程序的暂停?
Ret*_*ier 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;
}
Run Code Online (Sandbox Code Playgroud)
在setFormattedDigits方法中,数字如此变换:
String dialString = PhoneNumberUtils.extractNetworkPortion(data);
Run Code Online (Sandbox Code Playgroud)
查看文档,extractNetworkPortion你会注意到它,"提取网络地址部分[其中]网络地址部分是DTMF控制数字分隔符(暂停或等待)的一切.
因此代码有意地删除了暂停字符及其后面的任何内容.我能想到的唯一选择是替换拨号器或使用ACTION_CALL动作代替ACTION_DIAL.这将绕过拨号器,因此应谨慎使用.
| 归档时间: |
|
| 查看次数: |
6989 次 |
| 最近记录: |