0

我有以下 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:来的电话号码列表是动态的,是通过webservice实现的,所以会一直变化

4

1 回答 1

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;
}
于 2012-08-02T14:07:48.273 回答