سؤال

للأسف لدي حوالي 500 جهة اتصال في دفتر هاتفي ولسبب ما بعد مزامنةهم مع Thunderbird اسم العرض عشوائي أخيرًا ، أولاً ... أخيرًا. لذلك اعتقدت أنني سأضع عنصر واجهة مستخدم سريعًا معًا لإعادة عرض أسماء العرض الخاصة بي ، أولاً. الكود الذي أستخدمه أدناه ، ومع ذلك لا أحصل على القيم الأخيرة / الأولى. توجد المفاتيح في المؤشر (Data1 ، Data2) ، ولكن القيم كانت "1" و NULL على التوالي. أيه أفكار؟

Cursor cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, null, null, null);

        while (cursor.moveToNext() != false) {

        String id = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));

        String fname = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));

        String lname = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));

        if (lname != null && lname.length() > 0) {

              String sDName = lname + "," + fname;

              ContentValues values = new ContentValues();

              values.put(ContactsContract.Contacts.DISPLAY_NAME, sDName);

              getContentResolver().update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Contacts._ID+"=", new String[] {id});

        }

        }
هل كانت مفيدة؟

المحلول

ContactScontract.data يحتوي على جميع أنواع المعلومات المختلفة مثل العنوان البريدي وأرقام الهواتف والبريد الإلكتروني ومواقع الويب والفروسية وما إلى ذلك في جدول مشترك.

يجب عليك تصفية الصفوف التي تحتوي على المعلومات التي تهتم بها.

في الاستعلام ، أضف شرط حيث:

query(ContactsContract.Data.CONTENT_URI,  Data.MIMETYPE + "=?", 
    new String[]{StructuredName.CONTENT_ITEM_TYPE}, null, null);

انظر الوثائق ل ContactsContract.data

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top