1

同じメール ID を持つ複数の名前の連絡先リストがあります。以下のコードを変更して、個別のメール ID を持つ名前のみを取得するにはどうすればよいですか。

public ArrayList<String> getNameEmailDetails(){
        ArrayList<String> names = new ArrayList<String>();
        ContentResolver cr = getContentResolver();
        Cursor cur = cr.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));
                Cursor cur1 = cr.query( 
                        ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
                        ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
                                new String[]{id}, null); 
                while (cur1.moveToNext()) { 
                    //to get the contact names
                    String name=cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                    Log.e("Name :", name);
                    String email = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                    Log.e("Email", email);
                    if(email!=null){
                        names.add(name);
                    }
                } 
                cur1.close();
            }
        }
        return names;
    }
4

1 に答える 1

1

sqlite には個別の値を取得するためのカーソルがあり、true を使用すると個別の値のみが得られます

Cursor cursor = sqliteDB.query(true,"window",new String[]{"MediaType","_id",TAG_DATA_OR_LOCATION}, null, null,"DataOrLocation", null, null, null);

パブリック カーソル クエリ (ブール値の個別、文字列テーブル、文字列 [] 列、文字列選択、文字列 [] 選択引数、文字列 groupBy、文字列の所有、文字列 orderBy、文字列の制限)

于 2013-03-21T10:40:41.663 に答える