Soru & Cevap

Android Rehberde COMPANY arama

29.08.2014 - 09:27

Merhabalar. yaptığım bir android uygulamasında telefon rehberine daha önce kaydettiğim kişileri COMPANY'sine (iş yerine) göre aramak istiyorum. İnternetten baktığım ve anladığım kadarıyla yaptığımda bunu başaramadım. Bunu nasıl yapabilirim?

14 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-1372-1408467635.jpg
ahmtbrk
29.08.2014 - 02:50

[code]

    private Cursor searchContactByOrganization(String organizationName){
        ContentResolver cr = getContentResolver();
        String orgWhere = ContactsContract.Data.MIMETYPE + " = ? AND "+ContactsContract.CommonDataKinds.Organization.DATA+" = ?";
        String[] orgWhereParams = new String[]{ ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE,organizationName};
        Cursor orgCur = cr.query(ContactsContract.Data.CONTENT_URI,
                    null, orgWhere, orgWhereParams, null);
        while(orgCur.moveToNext()){
            String contactId = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.CONTACT_ID));
            String companyName = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA));
            Cursor userCur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,ContactsContract.Contacts._ID+" = ?" , new String[]{ contactId }, null);
            return userCur;
        }
        orgCur.close();
        return null;
    }

[/code]

bu metod search metodu kullanımıda şöyle.

[code]

Cursor userCur = searchContactByOrganization("Detaysoft");
        while(userCur.moveToNext()){
            String contactName = userCur
                    .getString(userCur
                            .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            System.out.println(contactName);
        }
        userCur.close();

[/code]

iyi çalışmalar tekrardan

picture-1372-1408467635.jpg
ahmtbrk
29.08.2014 - 10:40

Birazcık uğraştırdı ama hangi ilişkisel tablolarda ne var buldum ve bi örnek yaptım.İlk önce sorgu atıp mimetypesi organizasyon olan tabloya query atıyor ve tüm organizasyonları çekiyor ve daha sonra buna bağlı contact id'leride alıp bi sorgu daha atıp contact datalarını çekiyorum.

[code]

ContentResolver cr = getContentResolver();
        String orgWhere = ContactsContract.Data.MIMETYPE + " = ?";
        String[] orgWhereParams = new String[]{ ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE};
        Cursor orgCur = cr.query(ContactsContract.Data.CONTENT_URI,
                    null, orgWhere, orgWhereParams, null);
        while(orgCur.moveToNext()){
            String contactId = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.CONTACT_ID));
            String companyName = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA));
            Cursor userCur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,ContactsContract.Contacts._ID+" = ?" , new String[]{ contactId }, null);
            while(userCur.moveToNext()){
                String contactName = userCur
                        .getString(userCur
                                .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                System.out.println(contactName+"-"+companyName);
            }
            userCur.close();
        }
        orgCur.close();

[/code]

Kod bu şekilde bi test et KişiAdı - ŞirketAdı şeklinde çıktı alacaksın.Bundan sonra search kısmınıda kendin halledersin diye düşünüyorum.

Mushfig
29.08.2014 - 02:48
teşekkürler. kodunuz çok iyi çalışıyor. açıklamanız ise diğer sorunları çözmek için çok açıklayıcı