2011-08-13 5 views
0

Location TexterというAndroidアプリを作成しました。 連絡先を検索したいときは、電話番号の連絡先が表示されるようにしたいとき以外は正常に機能します。現在、すべての連絡先が表示されます。それは何Androidの連絡先(電話番号のみ)

public void showContacts(Main main, Intent data) { 
    Cursor cursor = main.managedQuery(data.getData(), null, null, null, null); 
    cursor.moveToNext(); 
    String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
    String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 

    Cursor phones = main.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
      null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null); 

    while (phones.moveToNext()) { 
     String phoneNo = phones.getString(phones.getColumnIndex(
       ContactsContract.CommonDataKinds.Phone.NUMBER)); 
     main.numbers.add(phoneNo); 
    } 
    main.pickPhoneNos(name); 
    phones.close(); 
} 

は、すべての連絡先との意図を開くです: は、ここでは、コードです。そのうちの1つが選択されると、メインアクティビティに戻ります。選択された連絡先が複数の携帯電話番号を持っている場合は、ユーザーにダイアログボックスの1つを選択するようダイアログを表示します。私が気づいたのは、対話が現れないという私の試みの一部です。 私が何を理解しているか分かりにくい場合は、アプリをダウンロードしてください。

答えて

0

あなたはあなたの質問でより具体的にする必要があります、あなたが求めているものを理解することは難しいです。 コードにいくつかの問題があります。

  1. あなたはcursorphonesカーソル上moveToFirst()を呼び出すことはありません。
  2. 最初のmoveToNext()呼び出しの戻り値をチェックすることは決してありません。

これらの関数の呼び出しがないと、メソッドがクラッシュする可能性があります。

+0

私はこのコードの問題について驚いていませんよ。私はそれが連絡先を選ぶことになると良いことではない。 私のアプリケーションは、選択した連絡先にテキストを送信します。現在、ボタンを押すと(連絡先を検索するために)、すべての連絡先が表示されます。しかし、私はそれが電話番号を持つ連絡先を表示するだけです。 –

0

これを追加します。

String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 

if (hasPhone.equalsIgnoreCase("1")) 
    hasPhone = "true"; 
else 
    hasPhone = "false" ; 

if (Boolean.parseBoolean(hasPhone)) 
{ 
    Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+" = "+contactId,null, null); 
    while (phones.moveToNext()) 
    { 
    ... 
    } 
    ... 
} 
関連する問題