2010-03-29 15 views
3

我有一個應用程序調用用戶存儲的號碼。除非數字包含逗號或散列符號,否則一切都可以正常工作,在這種情況下,Uri會在數字後截斷。我已經讀過,你需要對散列符號進行編碼,但即使這樣做,或者沒有散列符號,逗號也不會通過。但是,如果您只是從聯繫人中挑選號碼,他們確實會得到通過。我一定做錯了什麼。例如:如何使用Android ACTION_CALL發送雙音多頻音和暫停使用數字中的逗號作爲意圖?

String number = "1234,,,,4#1"; 
Uri uri = Uri.parse(String.format("tel:%s", number)); 
try { 
    startActivity(new Intent(callType, uri)); 
} catch (ActivityNotFoundException e) { ... 

只有數字'1234'最終在撥號程序中。

+1

注意,這是靶向的Android 1.6,並在模擬器上失敗,HTC Magic的,和摩托羅拉Droid運行2.01 。 – 2010-03-30 06:44:53

回答

0

哈希和逗號是URL中的保留字符。因此,轉換這兩個(逗號是%2C,散列是%23),看看是否有幫助。

+0

對不起,我應該說我已經試過了: String numberEncoded = URLEncoder.encode(number) 這也失敗了。這很奇怪,因爲文檔說:「構建和解析符合RFC 2396的URI引用。」但是,我也遇到了編碼逗號消失的問題。 – 2010-03-30 06:22:23

+0

我也試過:Uri uri = Uri.fromParts(「tel」,number,null),它自動對它進行編碼,但結果相同。 – 2010-03-30 07:12:18

+0

這是可能的。我想我需要嘗試一下並嘗試找到解決方法。 – 2010-03-30 16:14:38

0

對我的作品有 '', '*' & '#':

Intent intentCallForward = new Intent(Intent.ACTION_CALL);        
Uri uri = Uri.fromParts("tel", phoneNumber, "#"); 
intentCallForward.setData(uri);         
startActivity(intentCallForward); 
+1

問題是我正在從聯繫人列表中讀取電話號碼,並且用戶可能以字符串的形式輸入了任何序列,例如'12345 ,,,#1'我閱讀並通過URL意圖傳遞它。也許這是URI.parse是問題。我不再爲此工作,所以無法測試它。 – 2013-03-12 10:09:11

+1

我也注意到一個相關的問題出現在我的後面:http://stackoverflow.com/questions/3615886/sending-pause-and-dtmf-input-in-android?rq=1 – 2013-03-12 10:10:48