2016-09-16 84 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- APP) – 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; 
     } 
    } 
相關問題