我正在編寫一個應用程序來與我的服務器同步聯繫人詳細信息。爲此,我需要多次查詢使用內容提供者的聯繫人,因爲所有數據都不在一個表中。例如,通過使用聯繫人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. 更新聯繫人詳細信息android
- 2. 獲取Android中所有具有電話號碼的聯繫人詳細信息
- 3. 如何從手機獲取所有聯繫人詳細信息
- 4. 如何在Android中獲取聯繫人的所有詳細信息
- 5. 在android中檢索電話簿的聯繫人詳細信息
- 6. 使用GTMABAddressBook將聯繫人詳細信息保存到現有聯繫人
- 7. 從android聯繫人獲取組織詳細信息?
- 8. 爲什麼android聯繫人詳細信息不顯示?
- 9. Android主詳細信息詳細信息
- 10. 當我點擊聯繫人時,如何檢索聯繫人的詳細信息?
- 11. 如何以編程方式從Windows Contacts中檢索所有聯繫人的詳細信息?
- 12. 網站訪問者的詳細信息
- 13. 訪問SIM卡的詳細信息
- 14. 訪問JSON對象的詳細信息
- 15. 打開地址簿和填充詳細信息的聯繫人詳細信息並保存它
- 16. 在android中獲取聯繫事件的詳細信息
- 17. 定製iPhone聯繫人詳細信息屏幕
- 18. 將聯繫人詳細信息打印到PDF
- 19. 使用ajax發送聯繫人詳細信息到數據庫
- 20. 如何查看聯繫人詳細信息活動
- 21. 從聯繫人詳細信息獲取電子郵件地址
- 22. 無法讀取J2ME PIM聯繫人詳細信息
- 23. Javascript算法篩選聯繫人詳細信息
- 24. 如何刪除聯繫人詳細信息?
- 25. 獲取聯繫人詳細信息花費大量的時間在android?
- 26. Android對於獲取聯繫人詳細信息的性能下降
- 27. 如何通過Android Phone聯繫人列表中的代碼添加聯繫人詳細信息。?
- 28. 以編程方式訪問安卓照片詳細信息
- 29. Crystal Reports詳細信息詳細信息
- 30. ActiveRecord獲取所有+相關聯的詳細信息
嗨herschel。謝謝回覆。你的意思是說我可以使用Data.CONTENT_URI在單個查詢中獲得電子郵件,電話和地址嗎?如果是的話,你可以進一步解釋一下它是如何做到的?再次感謝 :) – iPhoneCoder 2011-12-19 06:46:06