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();
}
}