我正在編寫一個應用程序來與我的服務器同步聯繫人詳細信息。爲此,我需要多次查詢使用內容提供者的聯繫人,因爲所有數據都不在一個表中。例如,通過使用聯繫人ID,我必須單獨查詢每個聯繫人的電話,電子郵件和地址表,我覺得這些聯繫人效率不高。如果有人能夠指出我在單個查詢中獲取所有聯繫人詳細信息的方法,這將非常有幫助。在此先感謝:)訪問android聯繫人的所有詳細信息的最佳方式
0
A
回答
0
如果您有rawContactId,則不需要多次查詢。您可以將Data.CONTENT_URI作爲uri進行單個查詢,並在rawContactId上進行選擇。
您必須循環顯示光標才能讀取信息。要知道在至極列,你需要看到一個給定行中,你需要檢查MIMETYPE
編輯數據表
private interface DataQuery {
public static final String[] PROJECTION = new String[] { Data._ID, Data.MIMETYPE, Data.DATA1, Data.DATA2, Data.DATA3, };
public static final int COLUMN_ID = 0;
public static final int COLUMN_MIMETYPE = 1;
public static final int COLUMN_DATA1 = 2;
public static final int COLUMN_DATA2 = 3;
public static final int COLUMN_DATA3 = 4;
public static final int COLUMN_PHONE_NUMBER = COLUMN_DATA1;
public static final int COLUMN_PHONE_TYPE = COLUMN_DATA2;
public static final int COLUMN_GIVEN_NAME = COLUMN_DATA2;
public static final int COLUMN_FAMILY_NAME = COLUMN_DATA3;
public static final String SELECTION = Data.RAW_CONTACT_ID + "=?";
}
final Cursor c = resolver.query(Data.CONTENT_URI, DataQuery.PROJECTION, DataQuery.SELECTION, new String[] { String.valueOf(rawContactId) }, null);
try {
while (c.moveToNext()) {
final long id = c.getLong(DataQuery.COLUMN_ID);
final String mimeType = c.getString(DataQuery.COLUMN_MIMETYPE);
uri = ContentUris.withAppendedId(Data.CONTENT_URI, id);
if (mimeType.equals(StructuredName.CONTENT_ITEM_TYPE)) {
final String oldLastName = c.getString(DataQuery.COLUMN_FAMILY_NAME);
final String oldFirstName = c.getString(DataQuery.COLUMN_GIVEN_NAME);
//store them where you need
} else if (mimeType.equals(Phone.CONTENT_ITEM_TYPE)) {
final int type = c.getInt(DataQuery.COLUMN_PHONE_TYPE);
final String cellPhone = c.getString(DataQuery.COLUMN_PHONE_NUMBEIR);
//store them where you need
}
}
} // while
} finally {
if (c!=null) c.close();
}
請考慮,我沒有檢查代碼:我不知道在這裏有一個編譯器。我希望它會有用無論如何
0
Data是一個通用的表,可以容納任何種類的聯繫人數據。
存儲在給定行中的數據類型由行的MIMETYPE值指定,該值決定了通用列DATA1至DATA15的含義。
例如,如果數據類型爲Phone.CONTENT_ITEM_TYPE,則DATA1列存儲電話號碼,但如果數據類型爲Email.CONTENT_ITEM_TYPE,則DATA1存儲電子郵件地址。同步適配器和應用程序可以引入它們自己的數據種類。
相關問題
- 1. Ios獲取聯繫人聯繫方式的詳細信息
- 2. 更新聯繫人詳細信息android
- 3. 獲取Android中所有具有電話號碼的聯繫人詳細信息
- 4. 如何從手機獲取所有聯繫人詳細信息
- 5. 如何在Android中獲取聯繫人的所有詳細信息
- 6. 如何獲取特定組中Android聯繫人的所有詳細信息?
- 7. 獲取Android聯繫人的詳細信息非常慢
- 8. 從android中的contactId獲取聯繫人詳細信息?
- 9. 在android中檢索電話簿的聯繫人詳細信息
- 10. 列表+詳細信息 - 最佳方法?
- 11. 使用GTMABAddressBook將聯繫人詳細信息保存到現有聯繫人
- 12. 從android聯繫人獲取組織詳細信息?
- 13. 爲什麼android聯繫人詳細信息不顯示?
- 14. Android主詳細信息詳細信息
- 15. 當我點擊聯繫人時,如何檢索聯繫人的詳細信息?
- 16. 在單個查詢中獲取聯繫人的詳細信息
- 17. 啓動WP8中特定聯繫人的詳細信息頁面
- 18. 如何以編程方式從Windows Contacts中檢索所有聯繫人的詳細信息?
- 19. Aadhar卡的詳細信息訪問
- 20. 網站訪問者的詳細信息
- 21. 訪問JSON對象的詳細信息
- 22. 訪問SIM卡的詳細信息
- 23. 打開地址簿和填充詳細信息的聯繫人詳細信息並保存它
- 24. 在android中獲取聯繫事件的詳細信息
- 25. 有沒有辦法通過Chooser讀取聯繫人的詳細信息?
- 26. 使用ajax發送聯繫人詳細信息到數據庫
- 27. Google API - 如何獲取gmail聯繫人詳細信息頁面?
- 28. Rapportive詳細信息保存到Google聯繫人
- 29. 使用intent選擇一個聯繫人詳細信息
- 30. 從聯繫人詳細信息獲取電子郵件地址
嗨herschel。謝謝回覆。你的意思是說我可以使用Data.CONTENT_URI在單個查詢中獲得電子郵件,電話和地址嗎?如果是的話,你可以進一步解釋一下它是如何做到的?再次感謝 :) – iPhoneCoder 2011-12-19 06:46:06