经过大量的研究后,我把它扔掉,看看它是否有所收获。
我试图查询Android的phone_lookup
表,尝试从电话号码中获取一些额外的数据(lookup_key,photo_thumb_uri等)。
这是我的疑问:
String[] projection = {Contacts._ID, Contacts.LOOKUP_KEY, Utils.hasHoneycomb() ?
Contacts.DISPLAY_NAME_PRIMARY : Contacts.DISPLAY_NAME, Utils.hasHoneycomb() ?
Contacts.PHOTO_THUMBNAIL_URI : Contacts._ID};
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phone.getNumber()));
Cursor cs = context.getContentResolver().query(uri, projection, null, null, null);
在许多情况下,它运作得很好,我侥幸逃脱。但不幸的是,我已经看到了几个关于此错误的报告:
java.lang.IllegalArgumentException: column 'data1' does not exist at
android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167) at
android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137) at
android.content.ContentProviderProxy.query(ContentProviderNative.java:366) at
android.content.ContentResolver.query(ContentResolver.java:373) at
android.content.ContentResolver.query(ContentResolver.java:316) at
此版本仅针对Android版本4.2.2,4.4.2和5.1报告,其顺序为" frecuency precedence" (不确定是否有帮助。)
让我思考的是......我没有预测任何data1
列。我没有尝试获取ContactsContract.CommonDataKinds.Email.DATA
或ContactsContract.CommonDataKinds.Phone.Number
(就像我在其他查询中那样,获取其他表格)。那我错过了什么?我有没有看到隐含的连接?