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();
            }

        }

    };

私の問題は、Webサービス呼び出しから電話番号を取得し、一部の番号がnullであることです(トーストが表示される問題はありません)。一部の番号は正常です。いくつかの例:

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

しかし、一部の数字は 2 in 1 になります。例:

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

この番号について、intent.ACTION_CALL を呼び出そうとすると、電話は次のように呼び出します。

"746705070631212270507063122"

彼は S=7 h=4 o=6 などを取るからです。

文字列から 2 つの数字を取得し、正しい数字 (ショップ/バー) を選択するインテント チューザーを作成するにはどうすればよいですか?

PS: 電話番号のリストは動的であり、Web サービスを介して実装されるため、常に変化します。

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 に答える