0
EditText
を持っている私のPreferenceActivity
から電話帳の連絡先にアクセスしたいので、EditText
をクリックすると連絡先の選択画面にリダイレクトされます。そうする方法はありますか?電話帳にアクセスするためのAndroid PreferenceActivityコード
EditText
を持っている私のPreferenceActivity
から電話帳の連絡先にアクセスしたいので、EditText
をクリックすると連絡先の選択画面にリダイレクトされます。そうする方法はありますか?電話帳にアクセスするためのAndroid PreferenceActivityコード
EDITTEXT
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
if (intent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivityForResult(intent, PICK_CONTACT);
}
のクリックまたはタッチイベントで使用このコードを、その後、onClickイベントのコードを入れて
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_CONTACT) {
if (resultCode == getActivity().RESULT_OK) {
contactPicked(data);
}
}
}
private void contactPicked(Intent data) {
ContentResolver cr = activity.getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
cur.moveToFirst();
try {
// getData() method will have the Content Uri of the selected contact
Uri uri = data.getData();
//Query the content uri
cur = activity.getContentResolver().query(uri, null, null, null, null);
cur.moveToFirst();
// column index of the contact ID
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
// column index of the contact name
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
// column index of the phone number
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
new String[]{id}, null);
while (pCur.moveToNext()) {
String phone = pCur.getString(
pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)).replaceAll(" ", "");
//Here you can set phone number
etMobile.setText(phone);
//Toast.show(phone);
}
pCur.close();
// column index of the email
Cursor emailCur = cr.query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[]{id}, null);
while (emailCur.moveToNext()) {
// This would allow you get several email addresses
// if the email addresses were stored in an array
String email = emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS));
}
emailCur.close();
} catch (Exception e) {
e.printStackTrace();
}
}
を追加しますか? PreferenceScreen使用目的では? –
をクリックするか、またはあなたが設定画面で持っている編集テキストのタッチまたはドロー可能なクリックイベント。 – Sandeep
ありがとうございます。再び私は連絡先リストから連絡先の価値を取得し、それを保存したいです。しかし、連絡先にアクセスしている間、アプリはクラッシュしています。 –