我一直在研究一個android應用程序的概念,其中應用程序必須自動撥打一些特殊的USSD代碼,以便在用戶通過應用程序中的快捷方式啓動服務時啓動用戶感興趣的某些電信服務。有沒有辦法在Android上強制自動撥號特殊號碼?
我發現的問題是,當應用程序嘗試自動撥打這樣的短代碼或USSD號碼時,手機的操作系統(或它是呼叫意圖)不會自動撥號,而是提供用戶使用撥號盤中的代碼/號碼,因此用戶必須手動發起呼叫 - 這種打敗我的意圖是允許用戶只需點擊一下即可發起服務 - 即快捷方式。
目前,這是我如何啓動這些調用:
intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:" + number.trim()));
try {
activity.startActivity(intent);
} catch (Exception e) {
Log.d(Tag, e.getMessage());
}
有趣的是,一個數字,如256772777000會自動撥號,自動啓動用戶到電話,但號碼/代碼,因爲911,* 112#,* 1 * 23#等不會。
那麼,我需要做什麼改變,或者這是不可能的呢?
UPDATE
其實,看着其他的應用程序中,我autodialling用戶指定的號碼,與上面的代碼試圖將問題自動撥號USSD代碼是不是使用intent.ACTION_CALL
,我用intent.ACTION_DIAL
- 這絕對只是提示用戶撥打號碼,而不直接呼叫。當我解決這個問題時,該應用程序現在按預期工作。請參閱下面的答案...
代碼示例是最受歡迎的。
Android的指導性設計理念之一就是你不能做任何可能花費用戶金錢或危害他們隱私的事情。如果您可以通過Java API完成任務,那麼撥打號碼正是您需要做的根本事情。 – 2015-01-21 08:42:24
你確定當你使用數字如「+256772777000」,Android是自動撥號嗎?我複製粘貼你的代碼,但它只是顯示撥號盤,我不得不明確撥打電話,手動。在關於ACTION_DIAL的Android文檔中也寫了同樣的內容:這顯示了一個用戶界面,撥打的號碼允許用戶明確發起呼叫。 – AADProgramming 2015-01-21 12:54:14
我想你的意思是ACTION_CALL? – AADProgramming 2015-01-21 13:29:34