测试了半天,也没找到原因,报错日志如下:希望大家能不吝赐教~~~06-10 08:34:05.885: ERROR/DatabaseUtils(3133): Writing exception to parcel
06-10 08:34:05.885: ERROR/DatabaseUtils(3133): java.lang.NullPointerException
06-10 08:34:05.885: ERROR/DatabaseUtils(3133): at android.database.BulkCursorToCursorAdaptor.findRowIdColumnIndex(BulkCursorToCursorAdaptor.java:70)
06-10 08:34:05.885: ERROR/DatabaseUtils(3133): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:119)
06-10 08:34:05.885: ERROR/DatabaseUtils(3133): at android.os.Binder.execTransact(Binder.java:320)
06-10 08:34:05.885: ERROR/DatabaseUtils(3133): at dalvik.system.NativeStart.run(Native Method)
06-10 08:34:05.925: ERROR/DatabaseUtils(3133): Writing exception to parcel
06-10 08:34:05.925: ERROR/DatabaseUtils(3133): java.lang.NullPointerException
06-10 08:34:05.925: ERROR/DatabaseUtils(3133): at android.database.BulkCursorNative.onTransact(BulkCursorNative.java:89)
06-10 08:34:05.925: ERROR/DatabaseUtils(3133): at android.os.Binder.execTransact(Binder.java:320)
06-10 08:34:05.925: ERROR/DatabaseUtils(3133): at dalvik.system.NativeStart.run(Native Method)
06-10 08:34:05.945: DEBUG/AndroidRuntime(3174): Shutting down VM
06-10 08:34:05.955: WARN/dalvikvm(3174): threadid=1: thread exiting with uncaught exception (group=0x40015560)
06-10 08:34:06.015: ERROR/AndroidRuntime(3174): FATAL EXCEPTION: main
06-10 08:34:06.015: ERROR/AndroidRuntime(3174): java.lang.NegativeArraySizeException
06-10 08:34:06.015: ERROR/AndroidRuntime(3174): at android.database.BulkCursorProxy.getColumnNames(BulkCursorNative.java:281)
06-10 08:34:06.015: ERROR/AndroidRuntime(3174): at android.database.BulkCursorToCursorAdaptor.getColumnNames(BulkCursorToCursorAdaptor.java:213)
06-10 08:34:06.015: ERROR/AndroidRuntime(3174): at android.database.AbstractCursor.getColumnIndex(AbstractCursor.java:295)
06-10 08:34:06.015: ERROR/AndroidRuntime(3174): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:312)
06-10 08:34:06.015: ERROR/AndroidRuntime(3174): at android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:99)
通讯录中的联系人信息能获得。主要功能实现代码如下:public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
// Figure out the uri and return error if not matching
int type = URI_MATCHER.match(uri);
if (type == UriMatcher.NO_MATCH) {
return sErrorCursor; }
Log.i("ss", "query called");
try {
MatrixCursor mc = loadNewData(this);
mc.setNotificationUri(getContext().getContentResolver(),
ContactsContract.Contacts.CONTENT_URI);
MyCursor wmc = new MyCursor(mc, this);
return wmc;
} catch (Throwable e) {
return sErrorCursor;
}
} public static MatrixCursor loadNewData(ContentProvider cp) {
MatrixCursor mc = new MatrixCursor(CURSOR_COLUMNS);
Cursor allContacts = null;
try {
allContacts = cp.getContext().getContentResolver()
.query(ContactsContract.Contacts.CONTENT_URI, CONTACTS_COLUMN_NAMES, null, // row
// filter
null, ContactsContract.Contacts.DISPLAY_NAME); // order by
allContacts.moveToFirst();
Log.d("contactNuM", "contact numbers--------------"+allContacts.getCount());
while (!allContacts.isAfterLast()) {
//String timesContacted = "Times contacted: "+ allContacts.getInt(2);
long id=allContacts.getLong(0);
String des=allContacts.getString(1);
Object[] rowObject = new Object[] {
id, // id
des, // name
};
Log.d("contacID", "contact id is --------------"+id);
Log.d("contactName", "contact name is --------------"+des);
mc.addRow(rowObject);
allContacts.moveToNext();
}
return mc;
} finally {
allContacts.close();
}
}
06-10 08:34:05.885: ERROR/DatabaseUtils(3133): java.lang.NullPointerException
06-10 08:34:05.885: ERROR/DatabaseUtils(3133): at android.database.BulkCursorToCursorAdaptor.findRowIdColumnIndex(BulkCursorToCursorAdaptor.java:70)
06-10 08:34:05.885: ERROR/DatabaseUtils(3133): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:119)
06-10 08:34:05.885: ERROR/DatabaseUtils(3133): at android.os.Binder.execTransact(Binder.java:320)
06-10 08:34:05.885: ERROR/DatabaseUtils(3133): at dalvik.system.NativeStart.run(Native Method)
06-10 08:34:05.925: ERROR/DatabaseUtils(3133): Writing exception to parcel
06-10 08:34:05.925: ERROR/DatabaseUtils(3133): java.lang.NullPointerException
06-10 08:34:05.925: ERROR/DatabaseUtils(3133): at android.database.BulkCursorNative.onTransact(BulkCursorNative.java:89)
06-10 08:34:05.925: ERROR/DatabaseUtils(3133): at android.os.Binder.execTransact(Binder.java:320)
06-10 08:34:05.925: ERROR/DatabaseUtils(3133): at dalvik.system.NativeStart.run(Native Method)
06-10 08:34:05.945: DEBUG/AndroidRuntime(3174): Shutting down VM
06-10 08:34:05.955: WARN/dalvikvm(3174): threadid=1: thread exiting with uncaught exception (group=0x40015560)
06-10 08:34:06.015: ERROR/AndroidRuntime(3174): FATAL EXCEPTION: main
06-10 08:34:06.015: ERROR/AndroidRuntime(3174): java.lang.NegativeArraySizeException
06-10 08:34:06.015: ERROR/AndroidRuntime(3174): at android.database.BulkCursorProxy.getColumnNames(BulkCursorNative.java:281)
06-10 08:34:06.015: ERROR/AndroidRuntime(3174): at android.database.BulkCursorToCursorAdaptor.getColumnNames(BulkCursorToCursorAdaptor.java:213)
06-10 08:34:06.015: ERROR/AndroidRuntime(3174): at android.database.AbstractCursor.getColumnIndex(AbstractCursor.java:295)
06-10 08:34:06.015: ERROR/AndroidRuntime(3174): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:312)
06-10 08:34:06.015: ERROR/AndroidRuntime(3174): at android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:99)
通讯录中的联系人信息能获得。主要功能实现代码如下:public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
// Figure out the uri and return error if not matching
int type = URI_MATCHER.match(uri);
if (type == UriMatcher.NO_MATCH) {
return sErrorCursor; }
Log.i("ss", "query called");
try {
MatrixCursor mc = loadNewData(this);
mc.setNotificationUri(getContext().getContentResolver(),
ContactsContract.Contacts.CONTENT_URI);
MyCursor wmc = new MyCursor(mc, this);
return wmc;
} catch (Throwable e) {
return sErrorCursor;
}
} public static MatrixCursor loadNewData(ContentProvider cp) {
MatrixCursor mc = new MatrixCursor(CURSOR_COLUMNS);
Cursor allContacts = null;
try {
allContacts = cp.getContext().getContentResolver()
.query(ContactsContract.Contacts.CONTENT_URI, CONTACTS_COLUMN_NAMES, null, // row
// filter
null, ContactsContract.Contacts.DISPLAY_NAME); // order by
allContacts.moveToFirst();
Log.d("contactNuM", "contact numbers--------------"+allContacts.getCount());
while (!allContacts.isAfterLast()) {
//String timesContacted = "Times contacted: "+ allContacts.getInt(2);
long id=allContacts.getLong(0);
String des=allContacts.getString(1);
Object[] rowObject = new Object[] {
id, // id
des, // name
};
Log.d("contacID", "contact id is --------------"+id);
Log.d("contactName", "contact name is --------------"+des);
mc.addRow(rowObject);
allContacts.moveToNext();
}
return mc;
} finally {
allContacts.close();
}
}
if(null != allContacts) {
allContacts.moveToFirst();
Log.d("contactNuM", "contact numbers--------------"+allContacts.getCount()); while (!allContacts.isAfterLast()) {
long id=allContacts.getLong(0);
String des=allContacts.getString(1);
Log.d("contacID", "contact id is --------------"+id);
Log.d("contactName", "contact name is --------------"+des); Object[] rowObject = new Object[] {id, des, ;
mc.addRow(rowObject); allContacts.moveToNext();
}
}