0

連絡先名を文字列入力として受け取り、その連絡先が電話帳に存在する場合は彼の電話番号を返すアプリケーションをアンドロイドで作成しようとしています...

私は周りを検索してみましたが、正確にそれを行う方法に関する明確なチュートリアルはありません

入力:連絡先名 出力:電話番号

助けてください

      Cursor cursor = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 


     while (cursor.moveToNext()) { 
         String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

         if(name.equalsIgnoreCase(token3)) {

        try{     ContentResolver cr = context.getContentResolver();
             Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { ContactsContract.CommonDataKinds.Phone._ID}, null);
             String lname = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

         Toast.makeText(context, "number is "+lname, Toast.LENGTH_LONG).show();
        }catch (Exception e) {
            // TODO: handle exception
        }

         }
           } 

それは私がこれまで持っているものです。try catch ブロック内のコードは常にクラッシュします。

4

3 に答える 3

3

私は最終的に私の問題を解決するためにこの方法を書きました

public String get_Number(String name,Context context)

{String number="";


Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String[] projection    = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                ContactsContract.CommonDataKinds.Phone.NUMBER};

Cursor people = context.getContentResolver().query(uri, projection, null, null, null);

int indexName = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
int indexNumber = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);

people.moveToFirst();
do {
    String Name   = people.getString(indexName);
    String Number = people.getString(indexNumber);
    if(Name.equalsIgnoreCase(name)){return Number.replace("-", "");}
    // Do work...
} while (people.moveToNext());


if(!number.equalsIgnoreCase("")){return number.replace("-", "");}
else return number;
}

あまり効率的ではないかもしれませんが、うまくいきます

于 2012-07-10T01:48:23.380 に答える
2

この方法を試してみてください...

Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,);
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
if(name.equals(Your_String)) {
    Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { id }, null);
    String lname = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
于 2012-06-25T11:03:58.837 に答える