快崩溃了,大神来帮忙看看吧,。。。。一直提示Cursor错误。。。

/*------四大组件--ContentProvider----用来查询手机联系人

 * 1,创建MyContentProvider类来继承ContentProvider实现

 * 2,利用ContentResolver类接受getContentResolver()返回的对象来实现

 * 3,1和2的实现是一样的,他们都有相同的方法

 * --------------注意要在AndroidManiFest中加入联系人读取权限----------------------

 * */

package com.example.s3_contentprovider_demo1;


import android.app.Activity;

import android.content.ContentResolver;

import android.database.Cursor;

import android.os.Bundle;

import android.provider.ContactsContract;

import android.provider.ContactsContract.CommonDataKinds.Email;

import android.provider.ContactsContract.CommonDataKinds.Phone;

import android.provider.ContactsContract.Contacts;

import android.util.Log;



public class MainActivity extends Activity {


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

/* ContentResolver对象和ContentProvider对象是一样的,都有同样的方法 */

ContentResolver cr = getContentResolver();

//游标接受查询结果

Cursor c1 = cr.query(Contacts.CONTENT_URI, new String[]{Contacts._ID,Contacts.DISPLAY_NAME}, null, null, null);

if (c1!=null) {

//c1.moveToFirst();

while(c1.moveToNext()){

int id = c1.getInt(c1.getColumnIndex("_ID"));

String name = c1.getString(c1.getColumnIndex("DISPLAY_NAME"));

Log.i("xyz", "id: "+id);

Log.i("xyz", "name: "+name);

Log.i("xyz", "test...1..");

/*--------- 根据联系人的 ID 查询当前联系人的电话号码和类型 -------- */

Cursor c2 = cr.query(Phone.CONTENT_URI, new String[]{Phone.NUMBER,Phone.TYPE}, Phone.CONTACT_ID + "=" + id, null, null);

Log.i("xyz", "test...22222..");

if(c2!=null){

//c2.moveToFirst();

while(c2.moveToNext()){

//获得电话类型 用整型 来接收

int type = c2.getInt(c2.getColumnIndex("Phone.TYPE"));

if (type==Phone.TYPE_HOME) {//如果是家庭电话

Log.i("xyz", "家庭电话 :"+c2.getString(c2.getColumnIndex("Phone.NUMBER")));

}else if (type==Phone.TYPE_MOBILE) {//如果是移动电话

Log.i("xyz", "手机号码  :"+c2.getString(c2.getColumnIndex("Phone.NUMBER")));

}

}

c2.close();

}

/*--------- 通过联系人的 ID 来查询联系人的email邮箱 ----------*/

Cursor c3 = cr.query(Email.CONTENT_URI,new String[]{Email.DATA,Email.TYPE} , Email.CONTACT_ID+"="+id, null, null);

if (c3!=null) {

//c3.moveToFirst();

while(c3.moveToNext()){

int EmailType = c3.getInt(c3.getColumnIndex("Email.TYPE"));

if (EmailType==Email.TYPE_WORK) {//如果是工作邮箱

Log.i("xyz", "工作邮箱: "+c3.getString(c3.getColumnIndex("Email.DATA")));

}

}

c3.close();

}

}

c1.close();

}

}

}


Mark_G
浏览 1527回答 1
1回答

慕码人2521115

Cursor.hasNext()这么写
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android