2012-08-02 51 views
0

我試圖讓用戶在android中使用聯繫人選擇器插入他們的號碼。我目前正在使用Getting Number from Contacts Picker中的帖子2中的示例,出現聯繫人選擇器,但是當我選擇聯繫人時,聯繫人號碼不會影響我的edittext內部。 沒有logcat錯誤或任何。嘗試使用聯繫人選取器將聯繫人插入edittext

我的代碼:

public void doLaunchContactPicker(View view) { 
    Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, 
      Contacts.CONTENT_URI); 
    startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 

      switch (requestCode) { 
     case CONTACT_PICKER_RESULT: 
      Cursor cursor = null; 
      String phoneNumber = ""; 
      List<String> allNumbers = new ArrayList<String>(); 
      int phoneIdx = 0; 
      try { 
       Uri result = data.getData(); 
       String id = result.getLastPathSegment(); 
       cursor = getContentResolver().query(Phone.CONTENT_URI, null, Phone.CONTACT_ID + "=?", new String[] { id }, null); 
       phoneIdx = cursor.getColumnIndex(Phone.DATA); 
       if (cursor.moveToFirst()) { 
        while (cursor.isAfterLast() == false) { 
         phoneNumber = cursor.getString(phoneIdx); 
         allNumbers.add(phoneNumber); 
         cursor.moveToNext(); 
        } 
       } else { 
        //no results actions 
       } 
      } catch (Exception e) { 
       //error actions 
      } finally { 
       if (cursor != null) { 
        cursor.close(); 
       } 
       final EditText phoneInput = (EditText) findViewById(R.id.mobileno); 

       final CharSequence[] items = allNumbers.toArray(new String[allNumbers.size()]); 
       AlertDialog.Builder builder = new AlertDialog.Builder(SIMMessageSenderActivity.this); 
       builder.setTitle("Choose a number"); 
       builder.setItems(items, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int item) { 
         String selectedNumber = items[item].toString(); 
         selectedNumber = selectedNumber.replace("-", ""); 
         phoneInput.setText(selectedNumber); 
        } 
       }); 
       AlertDialog alert = builder.create(); 
       if(allNumbers.size() > 1) { 
        alert.show(); 
       } else { 
        String selectedNumber = phoneNumber.toString(); 
        selectedNumber = selectedNumber.replace("-", ""); 

        phoneInput.setText(selectedNumber); 
       } 

       if (phoneNumber.length() == 0) { 
        //no numbers found actions 
       } 
      } 
      break; 
     } 
    } else { 
     //activity result error actions 
    } 
} 
+0

我不知道你的問題是。請更好地描述它並更新您的帖子。 – JoxTraex 2012-08-02 16:16:00

+0

這只是簡單的意思,當我點擊一個聯繫人的聯繫人編號沒有插入到我的編輯文本?何時應該在edittext中選擇我的聯繫人號碼 – dythe 2012-08-02 16:17:54

+0

爲清晰起見,請更新您的帖子。不要把它放在評論中。 – JoxTraex 2012-08-02 16:18:51

回答

1

這下面的代碼是一個我用的,它是工作得很正常,我。試試這個。

if((requestCode == PICK_CONTACT) && (resultCode == RESULT_OK)) 
      { 
       if (data != null) { 
        Uri contactData = data.getData(); 

        try { 

         String id = contactData.getLastPathSegment(); 
         String[] columns = {Phone.DATA,Phone.DISPLAY_NAME}; 
         Cursor phoneCur = getContentResolver() 
           .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
             columns , 
             ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
               + " = ?", new String[] { id }, 
             null); 

         final ArrayList<String> phonesList = new ArrayList<String>(); 
         String Name = null ; 
         if(phoneCur.moveToFirst()) 
         { 
          do{ 
           Name = phoneCur.getString(phoneCur.getColumnIndex(Phone.DISPLAY_NAME)); 
           String phone = phoneCur 
           .getString(phoneCur 
             .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA)); 
            phonesList.add(phone); 

           } while (phoneCur.moveToNext()); 

         } 


         phoneCur.close(); 

         if (phonesList.size() == 0) { 
          Toast.makeText(
            this,"This contact does not contacin any number", 
            Toast.LENGTH_LONG).show(); 
         } else if (phonesList.size() == 1) { 
          toET.setText(phonesList.get(0)); 
         } else { 

          final String[] phonesArr = new String[phonesList 
            .size()]; 
          for (int i = 0; i < phonesList.size(); i++) { 
           phonesArr[i] = phonesList.get(i); 
          } 

          AlertDialog.Builder dialog = new AlertDialog.Builder(
            MessageManagerActivity.this); 
          dialog.setTitle("Name : "+Name); 
          ((Builder) dialog).setItems(phonesArr, 
            new DialogInterface.OnClickListener() { 
             public void onClick(
               DialogInterface dialog, 
               int which) { 
              String selectedEmail = phonesArr[which]; 
              toET.setText(selectedEmail); 
             } 
            }).create(); 
          dialog.show(); 
         } 
        } catch (Exception e) { 
         Log.e("FILES", "Failed to get phone data", e); 
        } 
       } 

      } 

創建您的EditText爲類變量..所以你也可以申請一個空的支票,我非常肯定你是爲這個目的再次創造它..