2016-09-16 3 views
0

Этот код может открыть встроенный каталог контактов на мобильном устройстве. Однако, когда я выбираю контакт, приложение сообщает «сделано», но не получает номер контакта - пользователь не может отправить сообщение.Извлечь контакт из телефонной справочника мобильного телефона

Как получить контактный номер? 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- приложение) – Bryan

ответ

0

Вот код только для выбора один телефонный номер из списка контактов. Я нашел этот код простейшим. сообщите мне, есть ли какие-либо проблемы.

начала деятельность с пикапом умыслом по типу данных телефона:

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