与保存DATAS选项联系API问题
问题描述:
我现在面临的一个基本问题,但我没有 为了帮我找到任何教程...与保存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);
}
}
==========注意=======
我不知道如何让所有的音符?
有人可以帮助我吗?
答
public static HashMap Parse(String XML, String Tag, ArrayList<String> NodesList)
{
HashMap v = new HashMap();
try
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(XML));
Document doc = db.parse(is);
doc.getDocumentElement().normalize();
NodeList nodeLst = doc.getElementsByTagName(Tag);
nodeCount = nodeLst.getLength();
for (int s = 0; s < nodeCount; s++)
{
Node fstNode = nodeLst.item(s);
if (fstNode.getNodeType() == Node.ELEMENT_NODE)
{
Element fstElmnt = (Element) fstNode;
for(String nodeName : NodesList)
{
NodeList fstNmElmntLst = fstElmnt.getElementsByTagName(nodeName);
Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
NodeList fstNm = fstNmElmnt.getChildNodes();
try {
String NodeValue = ((Node) fstNm.item(0)).getNodeValue().toString().trim();
if(NodeValue !=null)
v.put(nodeName + s, NodeValue);
}
catch(Exception e) {
v.put(nodeName + s, "");
}
}
}
}
}
catch (Exception e)
{
//e.printStackTrace();
}
return v;
}