从手机的电话目录中检索联系人

问题描述:

此代码可以在移动设备上打开内置联系人目录。但是,当我选择联系人时,应用报告“完成”,但不检索联系人号码 - 用户无法发送消息。从手机的电话目录中检索联系人

如何检索联系电话号码? 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(); 
     } 
    }); 
} 
+0

加紧措辞;正确的语法。 – Prune

+0

[从android应用中的联系人列表中选择号码和姓名]的可能重复(http://stackoverflow.com/questions/9496350/pick-a-number-and-name-from-contacts-list-in-android- APP) – Bryan

这里只是从联系人列表中选择一个电话号码的代码。我发现这个代码最简单。让我知道是否有任何问题。与手机的数据类型选秀意图

开始活动:

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; 
     } 
    }