卸载掉模拟器中的联系人,再用eclipse运行源码中的联系人到模拟器时出现异常,我没有修改源码中的代码,就仅仅说去掉了AndroidManifest.xml中的android:sharedUserId="android.uid.shared"这句,和加上了<uses-permission android:name="android.permission.GET_ACCOUNTS" />这句权限,因为不这么改,应用根本就运行不起来,现在的问题是应用能运行了,但是查询不到联系人(数据库中有数据,用友录能读出来),收藏中查询联系人也没错,没有弹出异常对话框,只是log中打印了异常,具体log如下:
04-02 08:26:28.577: ERROR/DatabaseUtils(619): Writing exception to parcel
04-02 08:26:28.577: ERROR/DatabaseUtils(619): java.lang.UnsupportedOperationException: Only CrossProcessCursor cursors are supported across process for now
04-02 08:26:28.577: ERROR/DatabaseUtils(619): at android.database.CursorToBulkCursorAdaptor.<init>(CursorToBulkCursorAdaptor.java:97)
04-02 08:26:28.577: ERROR/DatabaseUtils(619): at android.content.ContentProvider$Transport.bulkQuery(ContentProvider.java:155)
04-02 08:26:28.577: ERROR/DatabaseUtils(619): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:111)
04-02 08:26:28.577: ERROR/DatabaseUtils(619): at android.os.Binder.execTransact(Binder.java:288)
04-02 08:26:28.577: ERROR/DatabaseUtils(619): at dalvik.system.NativeStart.run(Native Method)
04-02 08:26:28.577: ERROR/DatabaseUtils(619): Caused by: java.lang.ClassCastException: com.android.providers.contacts.ContactsProvider2$3
04-02 08:26:28.577: ERROR/DatabaseUtils(619): at android.database.CursorToBulkCursorAdaptor.<init>(CursorToBulkCursorAdaptor.java:81)
04-02 08:26:28.577: ERROR/DatabaseUtils(619): ... 4 more
哪位大侠解决过的帮忙一下,万分感谢
04-02 08:26:28.577: ERROR/DatabaseUtils(619): Writing exception to parcel
04-02 08:26:28.577: ERROR/DatabaseUtils(619): java.lang.UnsupportedOperationException: Only CrossProcessCursor cursors are supported across process for now
04-02 08:26:28.577: ERROR/DatabaseUtils(619): at android.database.CursorToBulkCursorAdaptor.<init>(CursorToBulkCursorAdaptor.java:97)
04-02 08:26:28.577: ERROR/DatabaseUtils(619): at android.content.ContentProvider$Transport.bulkQuery(ContentProvider.java:155)
04-02 08:26:28.577: ERROR/DatabaseUtils(619): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:111)
04-02 08:26:28.577: ERROR/DatabaseUtils(619): at android.os.Binder.execTransact(Binder.java:288)
04-02 08:26:28.577: ERROR/DatabaseUtils(619): at dalvik.system.NativeStart.run(Native Method)
04-02 08:26:28.577: ERROR/DatabaseUtils(619): Caused by: java.lang.ClassCastException: com.android.providers.contacts.ContactsProvider2$3
04-02 08:26:28.577: ERROR/DatabaseUtils(619): at android.database.CursorToBulkCursorAdaptor.<init>(CursorToBulkCursorAdaptor.java:81)
04-02 08:26:28.577: ERROR/DatabaseUtils(619): ... 4 more
哪位大侠解决过的帮忙一下,万分感谢
大哥我也知道那句,那都写了啊,指向ContactsProvider,可我没改动ContactsProvider,而且关键是这个问题怎么解决啊,不是问的已经log里都写出来了的原因
如果你的代码写的是 return db.query(...)就可能引起此问题
试试看
SQLiteQueryBuilder sqlBuilder = new SQLiteQueryBuilder();
sqlBuilder.setTables(//表名);
Cursor cursor = sqlBuilder.query(...);
return cursor;
默认的查询全部联系人调用的是 mQueryHandler.startQuery(QUERY_TOKEN, null, uri, projection, getContactSelection(),null,getSortOrder(projection));
其中uri通过getUriToQuery()方法得到,推出uri=buildSectionIndexerUri(Contacts.CONTENT_URI);
我把uri改成uri=Contacts.CONTENT_URI;就可以查询出联系人
我看2.1的联系人源码时,默认查询全部联系人也就是MODE_DEFAULT时uri就是Contacts.CONTENT_URI
我改2.1源码联系人时都没出现过这种问题
buildSectionIndexerUri()方法里返回的是uri.buildUpon().appendQueryParameter(ContactCounts.ADDRESS_BOOK_INDEX_EXTRAS, "true").build();
不懂这句的意思,不知道加一个这样到查询参数(ContactCounts.ADDRESS_BOOK_INDEX_EXTRAS, "true")的真正意图,不加会怎样。2.1源码时uri直接就是Contacts.CONTENT_URI,谁也在2.2源码上修改过联系人啊
LZ知道是什么意思么?