1

どこにも答えが見つからないことに本当に驚いています。ここで問題です。

ContentResolver resolver = getContentResolver();

String[] columns = new String[]{Phone.CONTACT_ID, Phone.DISPLAY_NAME, Phone.NUMBER };
String where = Phone.NUMBER+"=?";
String[] params = new String[] {"777 777 7777"};
Cursor cursor = resolver.query(Phone.CONTENT_URI, columns, where, params, null);    

while (cursor.moveToNext()) { /* So on....*/

params の電話番号が「777 777 7777」の形式の場合、レコードが取得されません。「777-777-7777」の場合はレコードを取得します。さらに悪いことに、TelephonyManager.EXTRA_INCOMING_NUMBER で番号が「7777777777」と表示されます。この電話番号を照会するにはどうすればよいですか? ドキュメントによると、 Phone.NUMBER はユーザーが入力した方法です。まあ、それは私には何の役にも立ちません!!!

4

1 に答える 1

5

これを試して :

 Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(phoneNumber));        
 Cursor cs= context.getContentResolver().query(uri, new String[]{PhoneLookup.DISPLAY_NAME},null,null,null);

 if(cs.getCount()>0)
    contactName=cs.getString(cs.getColumnIndex(PhoneLookup.DISPLAY_NAME));

cs.close();

編集済み(コメントによる)

String phoneNumber = "777 777 7777"; 
Uri uri = Uri.withAppendedPath(Phone.CONTENT_FILTER_URI, Uri.encode(phoneNumber));      
String[] columns = new String[]{Phone.CONTACT_ID, Phone.DISPLAY_NAME, Phone.NUMBER };    
Cursor cursor = resolver.query(uri, columns, null, null, null);
于 2011-07-08T08:57:13.323 に答える