我有以下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实现,因此它将永远改变
答案 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;
}