我对Android开发有点新手,我现在完全陷入困境! 所以我希望你会帮助我!
所以 - 我试图通过联系人选择器中的联系人获取电话号码和电子邮件地址。 但是当我显示输出时,它表示它为0并且为空。 我究竟做错了什么? 这是代码!
if (view == btnPhonebook2) {
Intent intent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
}
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
switch (reqCode) {
case (PICK_CONTACT):
if (resultCode == Activity.RESULT_OK) {
// String id = null;
// FIRST TRY
Uri contactData = data.getData(); Cursor c = managedQuery(contactData, null, null, null, null);
if(c.moveToFirst()) {
String name = c.getString(c.getColumnIndexOrThrow(People.NAME));
int number = c.getInt(c.getColumnIndexOrThrow(People.PRIMARY_PHONE_ID));
String email = c.getString(c.getColumnIndexOrThrow(People.PRIMARY_EMAIL_ID));
//+" : c.getInt(c.getColumnIndexOrThrow(People.NUMBER));
Toast.makeText(getApplicationContext(),"you selected : "+name+"\n With the telephone number :"+number+"\n And the email :"+email,Toast.LENGTH_LONG).show();
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "60158096"));
startActivity(intent);
break;
case DialogInterface.BUTTON_NEGATIVE:
Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL, new String[]{"emailExample@gmail.com"});
email.putExtra(Intent.EXTRA_SUBJECT, "subject");
email.putExtra(Intent.EXTRA_TEXT, "message");
email.setType("message/rfc822");
startActivity(Intent.createChooser(email, "Choose an Email client :"));
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("How will you contact: "+name).setPositiveButton("Call", dialogClickListener)
.setNegativeButton("Email", dialogClickListener).show();
当我显示字符串名称时 - 它很好!?
答案 0 :(得分:1)
我在here之前回复了类似内容。
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
String phone = null;
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(cur .getColumnIndex(ContactsContract.Contacts._ID));
if (Integer .parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
{
Cursor pCur = cr.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { id }, null);
while (pCur.moveToNext()) {
phone = pCur .getString(pCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// This was the phone number for that contact id...
}
pCur.close();
Cursor emailCur = cr.query( ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[] { id }, null);
while (emailCur.moveToNext()) {
// For Email
emailContact = emailCur .getString(emailCur .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
emailType = emailCur .getString(emailCur .getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
}
}
}
同样,您可以获得image uri。
您的代码存在问题:
String name = c.getString(c.getColumnIndexOrThrow(People.NAME));
int number = c.getInt(c.getColumnIndexOrThrow(People.PRIMARY_PHONE_ID));
String email = c.getString(c.getColumnIndexOrThrow(People.PRIMARY_EMAIL_ID));
使用String类型而不是int和Contacts.People class is deprecated from api 5。此外,People.PRIMARY_PHONE_ID将为您提供ID而不是PhoneNumber。
String id = c.getString(c.getColumnIndex(People.PRIMARY_PHONE_ID));