intent.ACTION_CALL的电话号码清洁剂

时间:2012-08-02 12:57:25

标签: android android-intent onclicklistener phone-call sanitizer

我有以下onClickListener():

phonereserveListener = new OnClickListener() {

        @Override
        public void onClick(View v) {
            if (phone!=null){
            String url = "tel:"+phone;
            Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse(url));
            startActivity(callIntent);
            }
            else{
                Toast.makeText(getActivity(), "Phone number not available", Toast.LENGTH_LONG).show();
            }

        }

    };

我的问题是我从网络服务电话中获取电话号码并且一些号码为空(没有问题导致吐司出现),一些数字是正常的,一些例子:

" 05 07 06-3141"
" 05 07 06-3171"

但是有些数字是二合一的。例如:

"Shop:  05 07 06-3121\nBar:  05 07 06-3122"

对于这个号码,如果我尝试拨打intent.ACTION_CALL,电话会拨打以下内容:

"746705070631212270507063122"

因为他需要S = 7 h = 4 o = 6等。

如何从字符串中取出2个数字,然后选择一个意图选择正确的数字(商店/酒吧)?

PS:来的phonenumbers列表是动态的,并通过webservice实现,因此它将永远改变

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,我解决了使用此库从字符串中提取电话号码的问题:

http://code.google.com/p/libphonenumber/

public static ArrayList<String> extractPhoneNumber(String content) {

    ArrayList<String> numbers = new ArrayList<String>(0);

    PhoneNumberUtil instance = PhoneNumberUtil.getInstance();

    //Change IT with your contry code
    Iterable<PhoneNumberMatch> matches = instance.findNumbers(content, "IT");

    Iterator<PhoneNumberMatch> iterator = matches.iterator();

    while (iterator.hasNext()) {
        numbers.add(instance.format(iterator.next().number(), PhoneNumberFormat.INTERNATIONAL));
    }

    return numbers;
}