2012-03-27 114 views
1

我正在开发一个Android应用程序,该应用程序接收外出呼叫事件并从中提取目的地址,取消呼叫以执行某个过程,然后重拨自动地址号码自动无需用户意图。找出打出的电话是拨打电话还是拨打数据

问题:我不想处理不是真正的目的地电话地址的目的地号码(即USSD号码,如* 21#,它使某些运营商的某些数据请求)。 如何找出传出目的地是电话还是来自操作员的数据请求(无需维护任何表格)?

+0

如果它有星号或英镑符号,那么它可能不是电话号码。我相信所有USSD代码都有英镑符号或星号。 – Jakar 2012-03-27 09:22:27

+0

,但一个真正的电话号码也可以包含星号 - 一个简短的数字,如* 4444。 – Bush 2012-03-27 10:23:19

回答

0

一种可能的方法是,以检查是否号码相匹配的USSD的格式:

典型的USSD消息有*后跟数字哪个 指示要执行的动作或为参数启动。每组 数字之间用*分隔,并且该消息以#结尾。

USSD的最大长度为182个字符。

+0

嗯呀..这是一个典型的USSD请求格式。我会澄清我的问题:我不想告诉这个号码是否是USSD,但是要告诉这个号码是否是一个真正的电话号码,它实际上会引起语音呼叫 - 我想区分该拨号类型和休息,如果它在休息,我不想知道这是一个USSD还是一些拨号错误... – Bush 2012-03-27 10:28:29

+0

所以要澄清,你只是在谈论GSM呼叫?没有通过VoIP或Skype拨打电话? – 2012-03-27 10:40:45

+0

是的,只有GSM通话。 – Bush 2012-03-27 10:42:07