开发者社区> 问答> 正文

android读取联系人的问题?读不到mimetype_id:报错

public void click(View view){
		Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
		Uri dataUri = Uri.parse("content://com.android.contacts/data");
		ContentResolver resolver = getContentResolver();
		
		Cursor cursor = resolver.query(uri, null, null, null, null);
		StringBuilder sb = new StringBuilder();
		while(cursor.moveToNext()){
			String contact_id = cursor.getString(cursor.getColumnIndex("contact_id"));
		//	Log.i(TAG,"contact_id-----------------" + contact_id);
			Cursor dataCursor = resolver.query(dataUri, null, "contact_id=?", new String[]{contact_id} , null);
			String name = "";
			String number = "";
			while(dataCursor.moveToNext()){
				int mimetypeId = dataCursor.getInt(dataCursor.getColumnIndex("mimetype_id"));
				//String mimetypeId = dataCursor.getString(dataCursor.getColumnIndex("mimetype"));
				Log.i(TAG,"mimetype" + mimetypeId);
				String data1 = dataCursor.getString(dataCursor.getColumnIndex("data1"));
				if( mimetypeId == 7){
					name = data1;
				}else if(mimetypeId == 5){
					number = data1 ;
				}
			}
			sb.append("name:" + name + "number:" + number);
			dataCursor.close();
		}
		Log.i(TAG, sb.toString());
		cursor.close();
	}


为什么

int mimetypeId = dataCursor.getInt(dataCursor.getColumnIndex("mimetype_id"));

这句话报Caused by: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.

一般出这个错误,都是因为表中没有这个字段。而我前面dataUri查询的是data表,实际上查询的是view_data视图,但是不管data表还是view_data视图,都有mimetype_id,怎么会查不出呢?而mimetype可以查出来,data表中没有这个字段,view_data视图中有这个,这个可以查出来


还有个问题,就是用读出来的联系人会和实际的数量不一样呢??



展开
收起
kun坤 2020-06-07 16:04:47 717 0
1 条回答
写回答
取消 提交回答
  • 这个是什么。######读取手机联系人的信息######你查的时候就没加

    mimetype_id字段,当然查不出来######

    1.mimetype_id虽然在data表和view_data视图中有,但在允许的返回列中没有,因此查询不到。

    2.你读取的是raw_contacts表,实际显示的是contacts,一个contacts是由多个raw_contacts聚合而来,因此数量不同。

    ######楼主你最后怎么解决的
    2020-06-07 16:04:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载