Android 我无法在代码中获取EMAIL_ID列,而是在emailid列中获取联系人号码

Android 我无法在代码中获取EMAIL_ID列,而是在emailid列中获取联系人号码,android,android-contacts,Android,Android Contacts,我在这里张贴我的代码。 请帮我获取联系人的电子邮件地址。 我也得到了一个随机列表;请帮我整理一下数据 package com.example.webwerks.retrievingcontactsdemo; import android.app.Activity; import android.app.ListActivity; import android.content.ContentResolver; import android.database.Cursor; import andr

我在这里张贴我的代码。 请帮我获取联系人的电子邮件地址。 我也得到了一个随机列表;请帮我整理一下数据

package com.example.webwerks.retrievingcontactsdemo;

import android.app.Activity;
import android.app.ListActivity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;

import java.util.ArrayList;


public class MyActivity extends Activity {
  private String name;
  private String Number;
  private String alternateNumber;
  private String email_id;
  RelativeLayout relativeLayout;
  ListView listView;
  ArrayList <String> arrayList = new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    listView = (ListView)findViewById(android.R.id.list);
    getInformation(this.getContentResolver());
 //   relativeLayout = (RelativeLayout)findViewById(R.id.layoutRelative);


}
public void getInformation(ContentResolver contentResolver){
    Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);
    while (phones.moveToNext()){
        name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
        Number = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

        email_id = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
        arrayList.add(name);
        arrayList.add(Number);
        arrayList.add(email_id);
    }
    phones.close();
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayList);
    listView.setAdapter(adapter);


}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.my, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}
package com.example.webwerks.retrievingcontactsdemo;
导入android.app.Activity;
导入android.app.ListActivity;
导入android.content.ContentResolver;
导入android.database.Cursor;
导入android.provider.contacts合同;
导入android.support.v7.app.ActionBarActivity;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入android.widget.RelativeLayout;
导入java.util.ArrayList;
公共类MyActivity扩展了活动{
私有字符串名称;
私有字符串编号;
私有字符串交替枚举器;
私人字符串电子邮件地址;
相对的相对的;
列表视图列表视图;
ArrayList ArrayList=新的ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
listView=(listView)findViewById(android.R.id.list);
getInformation(this.getContentResolver());
//relativeLayout=(relativeLayout)findViewById(R.id.layoutRelative);
}
public void getInformation(ContentResolver ContentResolver){
游标phones=contentResolver.query(ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,null,null,null);
while(phones.moveToNext()){
name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataTypes.Phone.DISPLAY_name));
Number=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataTypes.Phone.Number));
email_id=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataTypes.email.DATA));
arrayList.add(名称);
arrayList.add(数字);
arrayList.add(email_id);
}
电话。关闭();
ArrayAdapter=newArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,arrayList);
setAdapter(适配器);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.my,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
这是我的密码。它给出了联系人姓名、联系人号码(主要)和电子邮件id列。此外,它只显示联系人号码。 而且数据并没有按照我的电话联系人列表进行排序。 请帮忙。
提前感谢:)

您需要使用
id
执行另一个查询,以获取
电子邮件
tat联系人的详细信息。所以检查一下这个代码

最好使用DataModel类:
公共类ContactData
{
公共字符串名称;
公共字符串电子邮件;
}
ArrayList数据=新的ArrayList();
public void getInformation(ContentResolver ContentResolver){
游标phones=contentResolver.query(ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,null,null,null);
while(phones.moveToNext()){
String id=phones.getString(phones.getColumnIndex(ContactsContract.Contacts.\u id));
游标cur1=contentResolver.query(
ContactsContract.CommonDataTypes.Email.CONTENT\u URI,空,
ContactsContract.CommonDataTypes.Email.CONTACT_ID+“=?”,
新字符串[]{id},null);
而(cur1.moveToNext()){
//获取联系人姓名
String name=cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataTypes.Phone.DISPLAY_name));
Log.e(“名称:”,名称);
String email=cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataTypes.email.DATA));
Log.e(“电子邮件”,电子邮件);
如果(电子邮件!=null){
Toast.makeText(这个,
“名称:”+Name+“电子邮件:”+EMail,1000)
.show();
}
} 
数据列表。添加(contactData);
cur1.close();
}
电话。关闭();
}
cursor=context.getContentResolver().query(
Contacts contract.Contacts.CONTENT_URI,null,null,null,null);
cursor.moveToFirst();
对于(int i=0;ipublic class ContactData
{
    public String name;
    public String email;
}


ArrayList<ContactData> data = new ArrayList<>(); 
  public void getInformation(ContentResolver contentResolver){
            Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);


        while (phones.moveToNext()){
            String id = phones.getString(phones.getColumnIndex(ContactsContract.Contacts._ID));
            Cursor cur1 = contentResolver.query( 
                    ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
                    ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
                            new String[]{id}, null); 
            while (cur1.moveToNext()) { 
                //to get the contact names
                String name=cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                Log.e("Name :", name);
                String email = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                Log.e("Email", email);


                if(email!=null){
                    Toast.makeText(this,
                            "Name : "+ name+" EMail  : "+email, 1000)
                            .show();
                }
            } 
            dataList.add(contactData);
            cur1.close();


        }
        phones.close();




    }
 cursor = context.getContentResolver().query(
            ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
 cursor.moveToFirst();

 for (int i = 0; i < cursor.getCount(); i++) {

   contact = getContact(cursor, context.getContentResolver());
   cursor.moveToNext();
  }

  private Contact getContact(Cursor cur , ContentResolver cr){
    String contactID = cur.getString(cur
            .getColumnIndex(ContactsContract.Contacts._ID));
  if (contactID != null) 
 {

     // for reading all contact
        Cursor pCur = cr.query(
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
                new String[]{contactID}, null);
        while (pCur.moveToNext()) {

            String contactNumber = pCur
                    .getString(pCur
                              .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            String contact_Number_Type = pCur
                    .getString(pCur
                            .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));

            contact.setContact_Number(contactNumber);
            contact.setContact_Number_Type(contact_Number_Type);

        }
        pCur.close();

        // for reading all email id

        Cursor emailCur = cr.query(
                ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
                ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
                new String[]{contactID}, null);
        while (emailCur.moveToNext()) {

            String emailContact = emailCur
                    .getString(emailCur
                        .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
            String emailType = emailCur
                    .getString(emailCur
                        .getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));

            contact.setContact_Email(emailContact);
            contact.setContact_Email_Type(emailType);
        }

        emailCur.close();
}

}