[英]How can i read names phone numbers and email addresses of all contacts in android
我正在創建一個應用程序,它獲取每個特定名稱的所有名稱,電話號碼和電子郵件,我有點卡住了。主題,但無法同時獲取全部三個對象。 我正在將名稱,電話和電子郵件保存在二叉樹中。.我是初學者。需要幫助!
這是我的代碼:
package com.example.contactify;
import android.content.ContentProviderOperation;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.example.Tree.ContactNode;
public class MainPage extends Activity implements OnClickListener {
ProgressBar progress;
TextView tv;
ContactNode t;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainmenu);
Button createmagic = (Button) findViewById(com.example.contactify.R.id.cButton);
tv = (TextView) findViewById(R.id.textView3);
createmagic.setOnClickListener(this);
t = new ContactNode();
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
switch (arg0.getId()) {
case R.id.cButton: {
try {
ContactNode contact = getContacts();
Intent i = new Intent("com.example.contactify.CreateNames");
i.putExtra("Contact", Names(t.root));
startActivity(i);
} catch (Exception e) {
// TODO Auto-generated catch block
Toast.makeText(this, e.getLocalizedMessage().toString(), Toast.LENGTH_LONG).show();
}
break;
}
case R.id.uButton: {
break;
}
}
}
String Names(ContactNode tree) {
return tree.getNames(tree);
}
ContactNode getContacts() {
final String[] PROJECTION = new String[]{
ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Email.DATA,
ContactsContract.CommonDataKinds.Phone.NUMBER
};
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, PROJECTION, null, null, null);
if (cursor != null) {
try {
final int contactIdIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID);
final int displayNameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
final int emailIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA);
long contactId;
String displayName, address, phoneNo;
while (cursor.moveToNext()) {
// Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
if (Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
contactId = cursor.getLong(contactIdIndex);
displayName = cursor.getString(displayNameIndex);
address = cursor.getString(emailIndex);
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactIdIndex,null, null);
while (phones.moveToNext())
{
phoneNo = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
t.insertContact(displayName, phoneNo, address);
}
phones.close();
}
}
} finally {
cursor.close();
}
}
return t;
}
}
電話號碼在android中具有多種類型。 像家庭,手機,辦公室等,因此您要多次添加具有空值的同一個人的電話號碼。
參考: http : //developer.android.com/reference/android/provider/Contacts.PhonesColumns.html
參考: http : //developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html
因此,您還使用電話光標來檢索電話號碼。 一個聯系人可能有0個或多個電話號碼。 您需要決定要哪個。 如果您想要除此以外的任何一個
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactIdIndex,null, null);
phoneNo = null;
while (phones.moveToNext())
{
phoneNo = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phones.close();
//this is if the phone exist then only it added
if(phoneNo != null)
t.insertContact(displayName, phoneNo, address);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.