从手机的电话簿中检索联系人
Posted
技术标签:
【中文标题】从手机的电话簿中检索联系人【英文标题】:Retrieve contact from mobile's phone directory 【发布时间】:2017-01-24 22:00:54 【问题描述】:此代码可以打开移动设备上的内置联系人目录。但是,当我选择一个联系人时,应用会报告“完成”,但不会检索联系人号码——用户无法发送消息。
如何找回联系电话? List View
不是解决方案:我只需要返回一个数字,而不是额外的信息。
这是我的代码:
public EditText no;
public EditText msg;
public Button cancel;
public Button snd;
public String Number,name,Message;
public int run=0;
public static final int PICK_CONTACT=1;
public void callContacts(View v)
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent,PICK_CONTACT);
@Override
public void onActivityResult(int reqCode,int resultCode,Intent data)
super.onActivityResult(reqCode,resultCode,data);
if(reqCode==PICK_CONTACT)
if(resultCode== ActionBarActivity.RESULT_OK)
Uri contactData = data.getData();
Cursor c = getContentResolver().query(contactData,null,null,null,null);
if(c.moveToFirst())
name = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.CONTENT_URI.toString()));
Toast.makeText(this,"done",Toast.LENGTH_SHORT).show();
这里是onCreate
方法
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
no = (EditText)findViewById(R.id.num);
msg = (EditText)findViewById(R.id.sms);
cancel = (Button)findViewById(R.id.cancel);
snd = (Button)findViewById(R.id.snd);
no.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
msg.setText("");
no.setText("");
callContacts(null);
);
snd.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Number = no.toString();
Message = msg.getText().toString();
SmsManager manager = SmsManager.getDefault();
ArrayList<String>long_sms = manager.divideMessage(Message);
manager.sendMultipartTextMessage(Number,null,long_sms,null,null);
Toast.makeText(getApplicationContext(),"Sent Successfully",Toast.LENGTH_SHORT).show();
);
【问题讨论】:
收紧措辞;更正语法。 Pick a Number and Name From Contacts List in android app的可能重复 【参考方案1】:这是仅用于从联系人列表中选择一个电话号码的代码。我发现这段代码最简单。如果有任何问题,请告诉我。
以选择手机数据类型的意图开始活动:
findViewById(R.id.choose_contact_button).setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Intent pickContact = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(pickContact, PICK_CONTACT_REQUEST);
);
现在设置 onAcitivityResult();
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
switch (requestCode)
case PICK_CONTACT_REQUEST:
if (resultCode == RESULT_OK)
Uri contactUri = intent.getData();
Cursor nameCursor = getContentResolver().query(contactUri, null, null, null, null);
if (nameCursor.moveToFirst())
String name = nameCursor.getString(nameCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = nameCursor.getString(nameCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
((EditText)findViewById(R.id.person_name)).setText(name);
((EditText)findViewById(R.id.enter_mobile)).setText(number);
nameCursor.close();
break;
【讨论】:
以上是关于从手机的电话簿中检索联系人的主要内容,如果未能解决你的问题,请参考以下文章