2012-04-01 16 views
7

私は電話番号を持っています。電話番号がデバイスの連絡先データベースに存在するかどうかを確認する方法はありますか?それに応じて、私はさらにアプリ内で動かす必要があります。提案してください、またはサンプルコードスニペットがある場合は、提供してください。連絡先に連絡があります

以下は、私が書いたコードです:

+0

ハイテクする@ user1306412(うまく作業している)私はアイスクリームのデバイス(SIII)に上記のコードを試してみました、それは私は、このメソッドを作成することになったいくつかの検索の後にそう 仕事didntはこの関数は常にfalseを返す、私は答えとして、あなたは私にそれのいくつかの提案を与える? –

答えて

17
public boolean contactExists(Activity _activity, String number) { 
    if (number != null) { 
     Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)); 
     String[] mPhoneNumberProjection = { PhoneLookup._ID, PhoneLookup.NUMBER, PhoneLookup.DISPLAY_NAME }; 
     Cursor cur = _activity.getContentResolver().query(lookupUri, mPhoneNumberProjection, null, null, null); 
     try { 
      if (cur.moveToFirst()) { 
       return true; 
      } 
     } finally { 
      if (cur != null) 
       cur.close(); 
     } 
     return false; 
    } else { 
     return false; 
    } 
}// contactExists 

nullpointer例外が処理されました。

+0

heloo @Ishu私の状態は常に偽になっています。もしそれが真であればチェックします。それ以外の場合はレコードを挿入しますが、それでもすべてが偽の場合は返します。 –

+0

@NiravMehta - 他の人のコードをコピーしないことをお勧めしますそれを理解しようとすることなく。 –

+0

@Ishu - そのようなヌル引数を扱うことは悪い考えです。 NPEを実行させ、 'null'引数を指定して' contactExists'を呼び出す場所/理由を追跡すると良いでしょう。根本原因のバグを隠すよりも修正する方が常に良いです。 –

3

は:: あなたはlookupUriを持っているあなたのコード内の軽微な変更を必要とし、事前に

public boolean contactExists(Activity _activity, String number) { 
    String[] mPhoneNumberProjection = { PhoneLookup._ID, PhoneLookup.NUMBER, PhoneLookup.DISPLAY_NAME }; 
    Cursor cur = _activity.getContentResolver().query(number, mPhoneNumberProjection, null, null, null); 
    try { 
     if (cur.moveToFirst()) { 
      return true; 
     } 
    } finally { 
     if (cur != null) 
      cur.close(); 
    } 
    return false; 
}// contactExists 

おかげで... ..

public boolean contactExists(Activity _activity, String number) { 
    Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)); 
    String[] mPhoneNumberProjection = { PhoneLookup._ID, PhoneLookup.NUMBER, PhoneLookup.DISPLAY_NAME }; 
    Cursor cur = _activity.getContentResolver().query(lookupUri, mPhoneNumberProjection, null, null, null); 
    try { 
     if (cur.moveToFirst()) { 
      return true; 
     } 
    } finally { 
     if (cur != null) 
      cur.close(); 
    } 
    return false; 
}// contactExists 
0

私の場合は

private boolean isContact(String incommingNumber) { 
     Cursor cursor =null; 
     String name = null; 
     try { 
      Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(incommingNumber)); 
      cursor = MainService.this.getContentResolver().query(uri, new String[] { PhoneLookup.DISPLAY_NAME }, null, null, null); 
      if (cursor != null && cursor.moveToFirst()) { 
       name = cursor.getString(cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME)); 
      } 
     } finally { 
      if(cursor!=null){ 
       cursor.close(); 
      } 
     } 
     return Util.hasValue(name); 
    } 
関連する問題