2011-04-21 39 views
26

Sending Pause and DTMF input in android類似,我嘗試將暫停字符「,」發送給撥號程序。這適用於HTC Sense手機,甚至在Xoom上,但不適用於像Nexus One或T-Mobile G2這樣的「股票體驗」手機(我懷疑摩托羅拉Droid)。發送暫停給撥號程序

這些手機似乎有一個撥號程序,試圖美化格式的數字(即添加短劃線),並停止點擊逗號字符。有趣的是,它不會扼殺「p」字符,儘管它會去掉「p」並繼續添加數字。

這裏是ActivityManager看到的是:

I/ActivityManager( 92): Starting activity: Intent { act=android.intent.action.DIAL dat=tel:8883333,444 cmp=com.android.contacts/.DialtactsActivity } 

我也試着編碼形式,「聯繫電話:8883333%2C444」對這些手機的行爲沒有什麼區別。我已經嘗試過「p」,如上所述,但是這些字符被丟棄導致撥號程序有888-333-3444錯誤地填充,我不確定「p」是否正確無論如何。

所以,問題:有沒有一種方法來指定一個適用於大多數或所有android撥號器的暫停?

回答

17

簡短回答:看起來好像不可能使用本機撥號程序。

龍答:

在Android的原生撥號器使用下面的代碼使用意向

if ("tel".equals(uri.getScheme())) { 
    // Put the requested number into the input area 
    String data = uri.getSchemeSpecificPart(); 
    setFormattedDigits(data, null); 
    return true; 
} 

setFormattedDigits方法數字變正是如此變換來提取您在傳遞給撥號器的數量:

String dialString = PhoneNumberUtils.extractNetworkPortion(data); 

望着文檔爲extractNetworkPortion你會發現它,「提取的網絡地址部分[磨片重新]網絡地址部分是一切高達DTMF控制數字分隔符(暫停或等待)

因此,代碼是故意刪除暫停字符及其後的任何內容。我能想到的唯一選擇是替換撥號程序或使用ACTION_CALL操作而不是ACTION_DIAL。這將繞過撥號程序,因此應謹慎使用。

+0

感謝您關注此事。 – pforhan 2012-02-01 14:27:06

3

從Android的latin ime source code

<!-- Pause is a comma. Check PhoneNumberUtils.java to see if this has changed. --> 
<Key 
    android:codes="44" 
    android:keyLabel="Pause" /> 

我不是100%肯定,如果它是公共的,但你也許可以使用:

PhoneNumberUtils.PAUSE 
+0

是的,這就是我確定我應該發送一個逗號。但問題在於,一些撥號器在遇到逗號時會停止冷卻。 – pforhan 2011-04-26 15:13:51

0

'' 是所使用的標準,但HTC 'p'in rogers magic,你試過'p'嗎? HTC Magic is using p

+0

是的,我嘗試了p字符,就像我在我的問題中所描述的那樣。它被簡單地放下,並且所有的數字被串在一起。 – pforhan 2011-05-20 12:49:33

3

撥號暫停已逗號30年

如果Android手機與ITU-T V.250兼容ATS8 = 2應設置了由逗號2秒的延遲。 (它有可能被設置爲0)

ITUT是一個很好的標準組織,您可以免費下載他們的標準。

+0

感謝您的信息。我真的認爲這是撥號人自己正在從意圖中的字符串中刪除逗號。如果我沒有記錯,這些撥號程序可讓您插入暫停,只要您從其用戶界面執行此操作即可。 – pforhan 2011-08-01 14:26:35

+0

Android手機可能很好地使用該標準內部*,但允許其他應用程序發送請求以撥打號碼的界面使用RFC3966 URI來指示該號碼,該號碼不支持暫停字符作爲有意的選擇(請參閱http:// tools.ietf.org/html/rfc3966#section-12) – Jules 2013-03-21 11:25:27

0

這是可怕的和危險的。在電話上收到電話會議電子郵件的商務人員必須不斷地來回切換以獲取號碼。

只是要像它應該它的工作:

tel://+1-877-555-1212,,,2345678# 

應撥則877號暫停在參加會議的代碼撥號和「進入」(#)在手機上的任何地方選擇的時候。

就這麼簡單。這在Android中不起作用的事實是iPhone銷售。

+1

你可能想要提交一個Android的錯誤,我不確定他們在這裏閱讀。 – pforhan 2014-10-06 15:13:36

0

供將來參考RFC-2806指定存儲在所述格式的電話號碼:

tel:number;postd=post-dial 

number可以與+開始有意撥號並且可以包括-.作爲視覺分離器和post-dial可包括數字,上殼體字母AD,#,*,p暫停和w等待。

+0

不幸的是,當在tel:URI中給出「postd =」時,iOS(從版本9開始)失敗,所以現在只保留使用,並且;在iOS上 – 2016-05-27 11:29:22