2011-05-31 84 views
1

我試圖在edittext中輸入用戶選擇的電話號碼。我有一個按鈕: -如何獲取電話號碼?

contact.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(Intent.ACTION_PICK, 
         Phone.CONTENT_URI); 
       startActivityForResult(intent, 0); 

      } 
     }); 

及以下功能:

@Override 
    public void onActivityResult(int reqCode, int resultCode, Intent data) { 
     super.onActivityResult(reqCode, resultCode, data); 

     switch (reqCode) { 
     case 0: 
      if (resultCode == Activity.RESULT_OK) { 
       Cursor c = getContentResolver().query(Phone.CONTENT_URI, null, 
         null, null, null); 
       c.moveToFirst(); 
       String phone = c.getString(c.getColumnIndexOrThrow(Phone.NUMBER)); 
       phone = phone.replace("-", ""); 
       Log.v("getting phone number", "Phone Number: " + phone); 
       txtPhoneNo.setText(phone); 

      } 
      break; 
     } 
    } 

和我最後一次聯繫的電話號碼。我怎樣才能拿到所選的電話號碼?

回答

1

做這樣的事情:

if (resultCode == Activity.RESULT_OK) 
{ 
    Uri contactData = data.getData(); 
    ContentResolver cr = getContentResolver(); 
    Cursor curContact = managedQuery(contactData, null, null, null, null); 

    if ((curContact != null) && (curContact.moveToFirst())) 
    { 
    String id = curContact.getString(curContact 
     .getColumnIndexOrThrow(BaseColumns._ID)); 

    // check there's a phone number at all 
    if (Integer.parseInt(curContact.getString(curContact 
     .getColumnIndexOrThrow(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) 
    { 

     // get the phone number 
     Cursor curNumbers = cr.query(
      ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
      ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", 
      new String[] { id }, null); 

     if ((curNumbers != null) && curNumbers.moveToFirst()) 
     { 
     String strNumber = 
      curNumbers.getString(
      curNumbers.getColumnIndexOrThrow(
      ContactsContract.CommonDataKinds.Phone.NUMBER))); 

     curNumbers.close(); 
     } 
    } 
    curContact.close(); 
    } 
+0

我得到強制關閉並在logcat中我有這樣的消息:10月5日至31日:26:19.680:ERROR/AndroidRuntime(4036):產生的原因: java.lang.IllegalArgumentException:列'has_phone_number'不存在 – Gaby 2011-05-31 10:27:37

+0

我發現這個問題。謝謝,它工作正常。 – Gaby 2011-05-31 10:41:23

0

看一看這個代碼!

btn_existing_contacts.setOnClickListener(new OnClickListener() { 
      public void onClick(View v){ 
       Intent intent_contacts = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI); 
       /*contacts.setAction(android.content.Intent.ACTION_VIEW); 
       contacts.setData(People.CONTENT_URI);*/ 
       startActivityForResult(intent_contacts, 0); 
       //displayContacts(); 


      } 
     }); 

從接觸屏幕回國後,

@Override 
protected void onActivityResult(int requestCode, int resultCode,Intent data) 
{ 
super.onActivityResult(requestCode, resultCode, data); 
String name,mailid,id; 
switch(requestCode) 
{ 
case 0: 
    { 
     if(resultCode == RESULT_OK) 
     { 
      Uri contactdata = data.getData(); 

      Cursor cur = managedQuery(contactdata, null, null, null, null); 


      if(cur.moveToFirst()) 
      { 
       id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
       Cursor emailCur = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null, 
         ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",new String[]{id}, null); 
       emailCur.moveToFirst(); 
       String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 


       name = cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 
       //mailid = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
       //mailid = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Email._ID)); 
       //Toast.makeText(context_contact, "Name:"+name+"\nmailid:"+email, Toast.LENGTH_SHORT).show(); 
       Intent intent_add_invitees = new Intent(<ClassContext>,<ur classname>.class); 
       intent_add_invitees.putExtra("invitee_name", name); 
       intent_add_invitees.putExtra("invitee_mailid", email); 
       setResult(RESULT_OK, intent_add_invitees); 
       finish(); 

      } 
     } 

    } 



} 
} 
+0

Send_invitations是什麼類? – Gaby 2011-05-31 09:19:06