2012-06-22 69 views
1

我有應用程序,它發送一些USSD代碼。在一種情況下,從帶有界面的用戶操作中,在另一種情況下 - 收到一些SMS(帶有通配符)。發送USSD代碼時的奇怪行爲(Android)

我發送USSD代碼:

private static void setCallDivert (Context context, String phoneNo) { 
    String callForwardString = "**21*" + phoneNo + "#"; 
    Log.i("Call forward string", callForwardString); 

    Intent intentCallForward = new Intent(Intent.ACTION_CALL); 
    intentCallForward.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    Uri uri2 = Uri.fromParts("tel", callForwardString, "#"); 
    intentCallForward.setData(uri2);         
    context.startActivity(intentCallForward); 
    divertDbRecord (context, true, phoneNo); 
} 

當從按鈕的onClick方法調用的,它的工作好。

從SMS處理程序呼叫時,出現消息「呼叫轉接連接問題或無效的MMI代碼」。

在logcat中,我可以看到一個請求。在兩種情況下都是一樣的。

當然,我在真正的Android手機上測試它,而不是仿真器上。

也許,有人可以幫助我嗎?

回答

1

您需要編碼您烏里哈希

public static final String encodedHash = Uri.encode("#"); 

這使得撥號器正確解釋#值