java - HTC Dialer 从电话号码中删除字母

标签 java android android-intent android-dialer

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

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

最佳答案

基本上,我只是在将其添加到 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");
}

关于java - HTC Dialer 从电话号码中删除字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23069672/

相关文章:

java - 从对话框中获取父 Activity 的 TextView 的值

java - spring security HTTP状态403-访问被拒绝

Stream 和 reduce 的 Java 8 编译器错误

java - Spring应用程序Thymeleaf中的css问题

android - 使用后删除 Intent

android - Butterknife 突然停止工作

android - 一个 Activity 的两个发射器

android - 无法解析符号 FragmentCompat

android - 如何从 ACTION_VIEW Intent 中排除特定应用程序?

java - Android 启动新 Activity 时出错