1

いくつかの連絡先 ID をデータベースに保存し、それらを整数のリストで取得します。

次に、Android 連絡先データベースのカーソルを特定の ID に設定しようとします。私がそれを行うと、LogCatはコードがクラッシュしたことを通知します

id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));

データベースの特定の要素を指すようにカーソルを設定し、連絡先データベース全体を解析することなく、名前とデフォルトの電話番号を取得しようとしました。

コードの何が問題になっていますか? ありがとうございました

            ArrayList<Contact> contactItemsTemp = new ArrayList<Contact>();

            DatabaseHandler db = new DatabaseHandler(BlacklistActivity.this);
            String name = "";
            String id = "";
            String phoneNumber = "";
            // Cursor cursor = null;

            List<Integer> mycontactID;
            mycontactID = db.getAllIDs();

            Iterator value = mycontactID.iterator();

            while (value.hasNext()) {
                int mg = (Integer) value.next();

                ContentResolver cr = getContentResolver();
//              String[] PROJECTION=new String[] {  ContactsContract.Contacts._ID,
//                      ContactsContract.Contacts.DISPLAY_NAME,
//                      ContactsContract.CommonDataKinds.Phone.NUMBER
//                        };
                String[] PROJECTION = new String[] {ContactsContract.Contacts._ID,
                        ContactsContract.Contacts.DISPLAY_NAME,
                        ContactsContract.CommonDataKinds.Phone.NUMBER
                       // ContactsContract.CommonDataKinds.Event.CONTACT_ID,
                };
            //   String where = Data.RAW_CONTACT_ID+" = "+mg+";

                //(
                Cursor cur = cr.query(ContactsContract.Data.CONTENT_URI,
                        PROJECTION ,  ContactsContract.Contacts._ID + " = "+ Integer.toString(mg), null, null);

                //cur.moveToNext();
                if(cur.moveToNext())
                {
                    Log.d("edw", cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
                }

//              int indexName = cur.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME);
    //            int indexPhoneType = cur.getColumnIndexOrThrow(Phone.TYPE);

              //  int contactIdIndex = cur.getColumnIndex(ContactsContract.PhoneLookup._ID)  ;  
               // int contactId = cur.getInt(contactIdIndex);    

                int indexID =  cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID);
                int indexName = cur.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME);
                int indexPhoneType = cur.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER);

                int contactId = cur.getInt(indexID); 
                int contactName = cur.getInt(indexName);
                int contactPhone = cur.getInt(indexPhoneType);

//                  if (cur.getCount() > 0) {
//                      while (cur.moveToNext()) {
//                          id = PROJECTION[0];
//                          name = PROJECTION[1];
//                          phoneNumber = PROJECTION[2];
//                                  
//                      }
//                  }


                id = cur.getString(contactId);
                name=cur.getString(contactName);
                phoneNumber=cur.getString(contactPhone);


//              id=PROJECTION[0];
//              name=PROJECTION[2];
//              phoneNumber=PROJECTION[3];


//              id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
//              name = cur
//                      .getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
//              phoneNumber = cur
//                      .getString(cur
//                              .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                contactItemsTemp.add(new Contact(Integer.parseInt(id), name, phoneNumber));
                cur.close();
}
4

0 に答える 0