Cursor cursor = resolver.query(
Data.CONTENT_URI,
DataQuery.PROJECTION,
DataQuery.SELECTION,
new String[] {String.valueOf(rawContactId)},
null);
隨着凸起在:安卓:內容解析器查詢返回0行,當它不應該
public static final String[] PROJECTION = new String[] {
Data._ID,
Data.MIMETYPE,
Data.DATA1,
Data.DATA2,
Data.DATA3};
和選擇是:
public static final String SELECTION = Data.RAW_CONTACT_ID + "=?";
的rawcontactId不會返回值,我做了日誌檢查。爲了給它一些上下文,我正在使用帳戶同步。這裏的目標是找到現有聯繫人的數據列,並使用任何新數據對它們進行編寫。我正在從Android提供的以下示例代碼工作:http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/ContactManager.html
總結我的問題,我有兩個聯繫人通過這個同步的帳戶添加沒有任何問題,但無法更新。任何人都有這方面的經驗?謝謝。
編輯:這是我的rawContact返回方法
private static long lookupRawContact(ContentResolver resolver, String username) {
Log.e("Looking up Raw Contact", username);
long authorId = 0;
Cursor cursor = resolver.query(
Data.CONTENT_URI,
UserIdQuery.PROJECTION,
UserIdQuery.SELECTION,
new String[] {username},
null);
try {
if(cursor != null && cursor.moveToFirst()) {
authorId = cursor.getLong(UserIdQuery.COLUMN_ID);
}
} finally {
if(cursor != null) {
cursor.close();
}
}
return authorId;
}
我回來就像是3061這裏的數字是UserIdQuery類:
final private static class UserIdQuery {
private UserIdQuery() {
}
public final static String[] PROJECTION = new String[] {RawContacts._ID};
public final static int COLUMN_ID = 0;
public static final String SELECTION = RawContacts.ACCOUNT_TYPE + "='" +
"com.tagapp.android" + "' AND " + RawContacts.SOURCE_ID + "=?";
}
,這裏是我的ContactSyncOperations類構造函數用於添加新聯繫人。這裏的源代碼是一個用戶名,和我在SELECTION參數中調用的一樣。
public ContactSyncOperations(Context context, String username,
String accountName, BatchOperationForSync batchOperation) {
this(context, batchOperation);
mBackReference = mBatchOperation.size();
mIsNewContact = true;
mValues.put(RawContacts.SOURCE_ID, username);
mValues.put(RawContacts.ACCOUNT_TYPE, "com.tagapp.android");
mValues.put(RawContacts.ACCOUNT_NAME, accountName);
mBuilder = newInsertCpo(RawContacts.CONTENT_URI, true).withValues(mValues);
mBatchOperation.add(mBuilder.build());
}
謝謝!
您確定您使用的是RawContactId本身?因爲代碼看起來很好,我dint有任何問題實現相同。確保值{String.valueOf(rawContactId)}確實是RawContactId而不是ContactId。對代碼的進一步引用將有助於回答。 – 2011-03-13 09:09:58
我將在稍後添加獲取rawContactId的代碼。 – JMRboosties 2011-03-13 09:34:19
什麼是UserIdQuery.COLUMN_ID的值? – 2011-03-13 10:20:26