在 USSD 代码中使用小数点调用意图



在我的安卓应用程序中,我想拨打一个类似 ussd 的代码 - *123*1*0.5# - 我使用的代码是这样的

Intent callIntent = new Intent(Intent.ACTION_DIAL(; callIntent.setData(Uri.parse("tel:" + Uri.encode( "*123*1*"+"0.5"+"#"((;

我知道这是有效的,因为我记录了它,我得到了正确的表达,但是当手机的拨号器打开时,它会擦除点并向我显示这个。*123*1*05# - 您可以看到点丢失了。

首先它不是编码问题,实际上点是 UTF-8 未触及的未保留字符之一。

这个问题的一个可能的解决方案可能是这篇文章的答案#2......如何发送包含十进制浮点数 (.( 的 USSD 代码?Wich 覆盖了NEW_OUTGOING_CALL的意图,但我尝试过但没有奏效。有没有人对此有解决方案。

请记住,问题不在于编码,而在于更改拨号意图获得的数字。

点不是 tel: 方案意图中的有效字符。它通常用于分隔电话号码中的数字组,我怀疑它在作为 dtmf 发送之前被拨号器删除,即使它是 USSD 允许的字母数字字符。

最新更新