1
我現在面臨的一個基本問題,但我沒有 爲了幫我找到任何教程...與保存DATAS選項聯繫API問題
我正在寫有幾分備份聯繫人選項的應用。我想 ,我的應用程序適用於Android手機1.5至2.2
因此,我寫了兩個實現ContactApi,一個用於1.5,1.6和一個 其他新的api版本。
以下是我遇到的問題列表。
隨着新的api,什麼都沒有。一切正常,備份聯繫人效果很好。
但與舊的API,我不能備份一些DATAS:
- 電子郵件DATAS(能讀,但是不能保存)
- IM DATAS(能讀,但不能夠保存)
- 注意事項(能讀的第一個音符,如果有很多的筆記,我失去了DATAS, 備份同樣的事情)
這裏是我使用的代碼:
======= EMAIL =======
private ArrayList<Email> getEmailAddresses(String id) {
ArrayList<Email> emails = new ArrayList<Email>();
Cursor emailCur = this.contentResolver.query(Contacts.ContactMethods.CONTENT_EMAIL_URI, null, Contacts.ContactMethods.PERSON_ID + " = ?", new String[] { id }, null);
Email email = null;
while (emailCur.moveToNext()) {
// This would allow you get several email addresses
email = new Email();
email.setData(emailCur.getString(emailCur.getColumnIndex(Contacts.ContactMe thods.DATA)));
email.setType(emailCur.getInt(emailCur.getColumnIndex(Contacts.ContactMetho ds.TYPE)));
email.setLabel(emailCur.getString(emailCur.getColumnIndex(Contacts.PeopleCo lumns.NAME)));
emails.add(email);
}
emailCur.close();
return emails;
}
private void saveEmailAddresses(ContentUris contactUri, List<Email> emailList, String id) {
if (emailList != null && emailList.size() > 0) {
ContentValues values = null;
ContentValues[] valueArray = new ContentValues[emailList.size()];
int i = 0;
for (Email email : emailList) {
values = new ContentValues();
values.put(Contacts.ContactMethods.PERSON_ID, id); //
values.put(Contacts.ContactMethods.KIND, Contacts.KIND_EMAIL); //
values.put(Contacts.ContactMethods.DATA, email.getData()); //
values.put(Contacts.ContactMethods.TYPE, email.getType()); //
values.put(Contacts.PeopleColumns.NAME, email.getLabel()); //
valueArray[i] = values;
i++;
}
contentResolver.bulkInsert(Contacts.ContactMethods.CONTENT_EMAIL_URI, valueArray);
}
}
======== IM ADRESS =============
private ArrayList<IM> getIM(Cursor cur, String id) {
ArrayList<IM> imList = new ArrayList<IM>();
String where = Contacts.ContactMethods.PERSON_ID + " = ? AND " + Contacts.ContactMethods.KIND + " = ?";
String[] whereParameters = new String[] { id,
String.valueOf(Contacts.KIND_IM) };
Cursor imCur =
this.contentResolver.query(Contacts.ContactMethods.CONTENT_URI, null,
where, whereParameters, null);
IM im = null;
while (imCur.moveToNext()) {
try {
String imName =
imCur.getString(imCur.getColumnIndex(Contacts.ContactMethodsColumns.DATA));
im = new IM();
im.setName(imName);
im.setType(imCur.getInt(imCur.getColumnIndex(Contacts.ContactMethodsColumns .TYPE)));
im.setProtocol(cur.getString(imCur.getColumnIndex(Contacts.ContactMethods.A UX_DATA)));
imList.add(im);
} catch (Exception e) {
Log.e(where, "Error im : ", e);
}
}
imCur.close();
return imList;
}
private void saveIM(List<IM> imList, String id) {
if (imList != null && imList.size() > 0) {
ContentValues values = null;
ContentValues[] valueArray = new ContentValues[imList.size()];
int i = 0;
for (IM im : imList) {
values = new ContentValues();
values.put(Contacts.ContactMethods.PERSON_ID, id); //
values.put(Contacts.ContactMethods.KIND, Contacts.KIND_IM); //
values.put(Contacts.ContactMethodsColumns.DATA, im.getName()); //
values.put(Contacts.ContactMethods.AUX_DATA,
ContactMethods.encodeCustomImProtocol(im.getProtocol())); //
values.put(Contacts.ContactMethodsColumns.TYPE, im.getType()); //
valueArray[i] = values;
i++;
}
contentResolver.bulkInsert(Contacts.ContactMethods.CONTENT_URI,
valueArray);
}
}
==========注意=======
我不知道如何讓所有的音符?
有人可以幫助我嗎?