在我的Android应用程序中,我想拨打一个类似于 - * 123 * 1 * 0.5#的ussd代码 - 我正在使用的代码是这样的
Intent callIntent = new Intent(Intent.ACTION_DIAL); callIntent.setData(Uri.parse(“tel:”+ Uri.encode(“* 123 * 1 *”+“0.5”+“#”)));
而且我知道这是有效的原因我记录它,我得到了正确的表达,但当手机的拨号器打开时,它会删除点并告诉我这个。 * 123 * 1 * 05# - 你可以看到点丢失了。
第一个不是编码问题,实际上点是UTF-8留下的无保留字符之一。
这个问题的一个可能的解决方案可能是这篇文章的第2个答案...... How to send a USSD code containing decimal floating point (.)?它覆盖了NEW_OUTGOING_CALL的意图,但我尝试过但没有用。有没有人有这方面的解决方案。
记住它不是关于编码的问题,是关于改变拨号Intent获得的数字。
答案 0 :(得分:0)
Dot不是tel:scheme意图中的有效字符。它通常用于分隔语音中的数字组,并且在发送为dtmf之前,我怀疑它被拨号器剥离,即使它是允许的字母数字USSD的字符。