2011-07-08 15 views
1

私は本当にどこにでも答えが見つかりません。だからここに問題がある。お問い合わせ先(正規化)電話番号

のparams内の電話番号が、私は何のレコードを取得していない「777 777 7777」としてフォーマットされ
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....*/ 

。それが "777-777-7777"であるとき、それは記録を得る。さらに悪いことに、TelephonyManager.EXTRA_INCOMING_NUMBERは私に "7777777777"という番号を与えます。この電話番号を問い合わせるにはどうすればよいですか? docsは、Phone.NUMBERはユーザーがそれをどのように入力したかを示しています。まあ、それは私に良いことはありません!

答えて

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); 
+0

はありがとうございました!私はこれで終わりました: String phoneNumber = "777 777 7777"; \t \t Uri uri = Uri.withAppendedPath(Phone.CONTENT_FILTER_URI、Uri.encode(phoneNumber)); \t \t String [] columns = new String [] {Phone.CONTACT_ID、Phone.DISPLAY_NAME、Phone.NUMBER}; \t \tカーソルcursor = resolver.query(uri、columns、null、null、null); – user123321

+0

お楽しみください:) :) –

+1

ありがとうございます。フォローアップの質問:このクエリーは、エミュレータで4つの連絡先を実行するのに1300ミリ秒かけて非常に遅いです。あなたはそれをスピードアップする方法を知っていますか?私は数百人の連絡先に関心があります。 – user123321

関連する問題