0

Android 2.2 で 3 つのものだけを表示するアプリケーションを作成しましたlistview。のすべての電話帳、連絡先、およびListView番号CheckBox。エミュレーター 2.2 でアプリを実行すると正常に動作しますが、実際のデバイスを使用してアプリケーションをテストすると、連絡先の電子メール ID のみが表示CheckBoxesされ、使用するとアプリがクラッシュします。

どこからでもメールIDを呼び出さないことを明確にしたい。以下のコードを使用して、電話帳から連絡先の詳細をフェッチします。

BaseAdapter クラス:

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


public View getView(final int position, View convertView, ViewGroup parentView) 
{

                    if(cursor != null){
             while(cursor.moveToNext()){
                    int nameFiledColumnIndex = cursor.getColumnIndex(
                                    ContactsContract.Contacts.DISPLAY_NAME);
                    String id = cursor.getString(
                            cursor.getColumnIndex(ContactsContract.Contacts._ID));
                    Cursor pCur = cr.query(
                         ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                         null, 
                         ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
                         new String[]{id}, null);   

                    while (pCur.moveToNext()) {
                     phoneNo = pCur.getString(pCur.getColumnIndex(
                             ContactsContract.CommonDataKinds.Phone.NUMBER));

    }

私が犯した過ちについて誰か知っていますか?

4

1 に答える 1

0

これを試してみてください...

     ContentResolver contentResolver = getContentResolver();
    Cursor cur = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null,
            null, null, null);

    if (cur.getCount() > 0) {
        while (cur.moveToNext()) {
            String id = cur.getString(cur
                    .getColumnIndex(ContactsContract.Contacts._ID));
            String name = cur
                    .getString(cur
                            .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            if (Integer
                    .parseInt(cur.getString(cur
                            .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
                // Query phone here. Covered next

                Cursor phoneCur = contentResolver.query(
                        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                        null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                + " = ?", new String[] { id }, null);
                while (phoneCur.moveToNext()) {
                    // Do something with phones
                    String phoneNo = phoneCur.getString(pCur
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                    contactDataset = new ContactDataset(); //This is object of dataset class to add the contacts.
                    contactDataset.setName(name);
                    contactDataset.setPhoneNumber(phoneNo);
                    getContactList.add(contactDataset);                     
                }
                pCur.close();
            }
        }
    }

それが機能するかどうかを教えてください.......

于 2012-08-10T06:28:57.763 に答える