2012-03-27 176 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