1

私は、着信通話と着信テキスト メッセージのブロードキャスト インテントを受信する Android アプリに取り組んでいます。

次に、着信番号を取得し、着信番号を使用してユーザーの連絡先を検索します。

これはあまり機能していませんが、少し問題があります。+ で始まる場合は連絡先リストで番号が検索され、最初の 3 文字が取り除かれ、先頭に 0 が付けられるか、+ が含まれていない場合は単に検索されるように動作しています。ただし、ユーザーが番号にスペースを入力すると、アプリが連絡先を見つけられないという小さな問題があります。たとえば、連絡先番号が として保存されてい07412xxxxxxて、着信番号が07412xxxxxxまたはとして入ってくるとし+447412xxxxxxます。ただし、連絡先番号が「07412 xxx xxx and the incoming number is07412xxxxxx」として保存されている場合、番号が認識されないため、連絡先名が見つかりません。

数値形式をすべて考慮して検索を実行するにはどうすればよいですか。以下は、私が現在使用しているコードです。

public String getContactNameFromNumber(String number)
    {

        if (number.startsWith("+"))
        {
            number = "0" + number.substring(3);
        }

        String contactName = null;
        ContentResolver contentResolver = context.getContentResolver();

        Uri uri = Data.CONTENT_URI;
        String[] projection = new String[] {PhoneLookup._ID, PhoneLookup.DISPLAY_NAME};
        String selection = ContactsContract.CommonDataKinds.Phone.NUMBER + " = ?";
        String[] selectionArgs = { number };
        Cursor cursor = contentResolver.query(uri, projection, selection, selectionArgs, null);

        if (cursor.moveToFirst())
        {

            contactName = cursor.getString(cursor.getColumnIndexOrThrow(PhoneLookup.DISPLAY_NAME));
            cursor.close();
            return contactName;
        }
        else
        {
            cursor.close();
            return null;
        }
    }
4

1 に答える 1

1

試す:

String selection = "REPLACE (" + ContactsContract.CommonDataKinds.Phone.NUMBER + ", \" \" , \"\" ) = ?";

置換機能を参照してください。

于 2013-01-21T12:02:17.183 に答える