我有一个用于访问联系人的代码段.当用户单击该按钮时,联系人列表将打开,用户可以从联系人中选择一个人,并且该人的电子邮件地址应该在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使用任何你想要的代码.