Java HTC拨号程序从电话号码中删除字母

Java HTC拨号程序从电话号码中删除字母,java,android,android-intent,android-dialer,Java,Android,Android Intent,Android Dialer,我有一个问题,特别是HTC Sense的电话拨号程序删除了传递给它的电话号码中的任何字母。我用这个代码来启动手机,它在Android股票上运行。我没有带TouchWiz的三星手机可以测试,所以这可能也是一个问题 public void callPhoneNumber(Context context, String number) { ... //Number will be something like "123-456-TEST" number = "tel:" + n

我有一个问题,特别是HTC Sense的电话拨号程序删除了传递给它的电话号码中的任何字母。我用这个代码来启动手机,它在Android股票上运行。我没有带TouchWiz的三星手机可以测试,所以这可能也是一个问题

public void callPhoneNumber(Context context, String number) {
    ...
    //Number will be something like "123-456-TEST"
    number = "tel:" + number;
    context.startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(number)));
    ...
}

在股票Android上,如果我有一个像“123-456-TEST”这样的数字,它将被正确解释为“123-456-8378”,而在HTC Sense上,它将在拨号器中以“123-456”结束。如果它们都是数字,那么两者都很好。除了编写我自己的电话号码解析器来将号码正确地传递给HTC,还有其他方法吗?提前感谢。

基本上,我只是在添加到意图之前添加了自己的解析。我只是用这个非常松散的正则表达式来完成工作。如果有人有一个更简单的正则表达式来实现这一点,我将不胜感激

public void callPhoneNumber(Context context, String number) {
    ...
    number = "tel:" + replaceLettersInNumber(number);
    context.startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(number)));
    ...
}

public static String replaceLettersInNumber(String number) {
    return number
        .replaceAll("[ABCabc]", "2")
        .replaceAll("[DEFdef]", "3")
        .replaceAll("[GHIghi]", "4")
        .replaceAll("[JKLjkl]", "5")
        .replaceAll("[MNOmno]", "6")
        .replaceAll("[PQRSpqrs]", "7")
        .replaceAll("[TUVtuv]", "8")
        .replaceAll("[WXYZwxyz]", "9");
}

为什么不使用内置的实用程序库?