我仍然是Android应用程序开发的新手,我遇到了一个问题,我希望你能帮助我......
我正在尝试检索针对手机中的联系人存储的任何“注释”。我想检查联系人(当前来电者)是否有与之相关的任何注释,然后根据内容等显示内容或执行某些操作......
我已经尝试下面的代码作为测试,看看数据是否在我的光标内的任何地方被检索,但是虽然它检索了一些数据,但我看不到注释的内容 - 所以我想我在错误的地方!
我已经声明了contentID,这是使用下面的代码进行查找并使用收到的id的结果。
Uri lookupUri = Uri.withAppendedPath(Phone.CONTENT_FILTER_URI, Uri.encode(inCommingNumber));
String[] mPhoneNumberProjection = { Phone._ID, Phone.NUMBER, Phone.DISPLAY_NAME};
Cursor cur = getContentResolver().query(lookupUri , mPhoneNumberProjection, null, null, null);
private boolean hasNote(String contactID){
Boolean noteFound = false;
Cursor noteCur = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, null, null, null);
if(noteCur.moveToFirst()) {
int numCols = noteCur.getColumnCount();
if(numCols > 0){
for(int x = 0; x < numCols; x++){
Log.d(APP_TAG, " column " + x + " contains: " + noteCur.getString(x));
}
}
noteFound = true;
} else{
Log.d(APP_TAG, "No Note retrieved");
}
noteCur.close();
return noteFound;
}
道歉,我似乎无法在这篇文章中正确显示代码!!
任何帮助都会很棒
我尝试了各种各样的东西,但似乎无法获得这些数据。我通过简单的联系人管理器添加它来创建注释。我正在使用Android 2.2。
答案 0 :(得分:2)
以下代码会显示手机上所有联系人的第一个备注:
Cursor contactsCursor = null;
try {
contactsCursor = getContentResolver().query(RawContacts.CONTENT_URI,
new String [] { RawContacts._ID },
null, null, null);
if (contactsCursor != null && contactsCursor.moveToFirst()) {
do {
String rawContactId = contactsCursor.getString(0);
Cursor noteCursor = null;
try {
noteCursor = getContentResolver().query(Data.CONTENT_URI,
new String[] {Data._ID, Note.NOTE},
Data.RAW_CONTACT_ID + "=?" + " AND "
+ Data.MIMETYPE + "='" + Note.CONTENT_ITEM_TYPE + "'",
new String[] {rawContactId}, null);
if (noteCursor != null && noteCursor.moveToFirst()) {
String note = noteCursor.getString(noteCursor.getColumnIndex(Note.NOTE));
Log.d(APP_TAG, "Note: " + note);
}
} finally {
if (noteCursor != null) {
noteCursor.close();
}
}
} while (contactsCursor.moveToNext());
}
} finally {
if (contactsCursor != null) {
contactsCursor.close();
}
}
如果您要在笔记上存储某种结构化数据,以便对使用自由格式备注字段采取措施可能不是最佳方法。使用新的联系人合同模型,您可以将自己的数据字段(在ContactsContract.Data中)附加到联系人,只需为他们提供您自己唯一的mimetype。