我有一个用于访问联系人的代码段.当用户单击该按钮时,联系人列表将打开,用户可以从联系人中选择一个人,并且该人的电子邮件地址应该在edittext上写入.我可以收到用户选择的人的电子邮件.但我无法将其设置为edittext.
static String email = ""; imgbtnaddfromcontacts.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (v == imgbtnaddfromcontacts) { try { Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent,1); } catch (Exception e) { e.printStackTrace(); Log.e("Error in intent : ",e.toString()); } } } }); kimeTxt.setText(email); } @Override public void onActivityResult(int reqCode,int resultCode,Intent data) { super.onActivityResult(reqCode,resultCode,data); try { if (resultCode == Activity.RESULT_OK) { // Get data Uri contactData = data.getData(); // Cursor Cursor cur = managedQuery(contactData,null,null); ContentResolver contect_resolver = getContentResolver(); // List if (cur.moveToFirst()) { String id = cur .getString(cur .getColumnIndexOrThrow(ContactsContract.Contacts._ID)); Cursor phoneCur = contect_resolver.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",new String[] { id },null); Cursor emailCur = contect_resolver.query( ContactsContract.CommonDataKinds.Email.CONTENT_URI,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",null); if (phoneCur.moveToFirst()) { name = phoneCur .getString(phoneCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); no = phoneCur .getString(phoneCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); } while (emailCur.moveToNext()) { // This would allow you get several email addresses // if the email addresses were stored in an array email = emailCur .getString(emailCur .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); if (email != null) { seciliEmail = email; } else { Toast.makeText(EpostaIletActivity.this,"Kişinin eposta hesabı bulunmamaktadır.",Toast.LENGTH_SHORT); Log.w("Error: ","Kişinin eposta hesabı yok."); } } Log.e("Phone no & name & email :***: ",name + " : " + no + ":" + email); // txt.append(name + " : " + no + "\n"); id = null; name = null; no = null; seciliEmail = "xxx"; phoneCur = null; emailCur.close(); } contect_resolver = null; cur = null; // populateContacts(); } } catch (IllegalArgumentException e) { e.printStackTrace(); Log.e("IllegalArgumentException :: ",e.toString()); } catch (Exception e) { e.printStackTrace(); Log.e("Error :: ",e.toString()); } }
解决方法
使用以下代码从所选联系人处获取电子邮件地址 –
public void doLaunchContactPicker(View view) { Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI); startActivityForResult(contactPickerIntent,CONTACT_PICKER_RESULT); } @Override protected void onActivityResult(int requestCode,Intent data) { if (resultCode == RESULT_OK) { switch (requestCode) { case CONTACT_PICKER_RESULT: Cursor cursor = null; String email = "",name = ""; try { Uri result = data.getData(); Log.v(DEBUG_TAG,"Got a contact result: " + result.toString()); // get the contact id from the Uri String id = result.getLastPathSegment(); // query for everything email cursor = getContentResolver().query(Email.CONTENT_URI,Email.CONTACT_ID + "=?",null); int nameId = cursor.getColumnIndex(Contacts.DISPLAY_NAME); int emailIdx = cursor.getColumnIndex(Email.DATA); // let's just get the first email if (cursor.moveToFirst()) { email = cursor.getString(emailIdx); name = cursor.getString(nameId); Log.v(DEBUG_TAG,"Got email: " + email); } else { Log.w(DEBUG_TAG,"No results"); } } catch (Exception e) { Log.e(DEBUG_TAG,"Failed to get email data",e); } finally { if (cursor != null) { cursor.close(); } EditText emailEntry = (EditText) findViewById(R.id.editTextv); EditText personEntry = (EditText) findViewById(R.id.person); emailEntry.setText(email); personEntry.setText(name); if (email.length() == 0 && name.length() == 0) { Toast.makeText(this,"No Email for Selected Contact",Toast.LENGTH_LONG).show(); } } break; } } else { Log.w(DEBUG_TAG,"Warning: activity result not ok"); } }
doLaunchContactPicker是按钮的onclick使用任何你想要的代码.