1

我特别遇到了 HTC Sense 的电话拨号器从传递给它的电话号码中删除任何字母的问题。我正在使用此代码启动电话意图,它适用于 Stock 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)));
    ...
}

如果我有一个像“123-456-TEST”这样的数字,它会被正确解释为“123-456-8378”,而对于 HTC Sense,它会在拨号器中以“123-456”结束。如果它们都是数字,那么两者都可以正常工作。除了编写我自己的电话号码解析器以将号码正确传递给 HTC 意图之外,还有其他方法吗?提前致谢。

4

1 回答 1

1

基本上,我只是在将其添加到 Intent 之前添加了自己的解析。我只是使用这个非常草率的正则表达式来完成工作。如果有人有更简单的正则表达式来完成此操作,我将不胜感激。

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");
}
于 2014-04-14T22:33:41.680 回答