الوصول إلى بيانات الاتصال
-
26-09-2019 - |
سؤال
للأسف لدي حوالي 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
لا تنتمي إلى StackOverflow