android - 在 Android 中,如何选择联系人并将其显示在我的应用程序中?

标签 android contacts

我是 android 的初学者,我正在构建一个应用程序,当用户按下按钮时,会显示存储在手机中的联系人。当他从中选择一个联系人时,我必须获取选定的联系人姓名和号码。我尝试使用代码,但只显示所选联系人的姓名,而不显示电话号码。

public void readcontact(){
    try {
        Intent intent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts/people"));
        startActivityForResult(intent, PICK_CONTACT);
    } catch (Exception e) {
            e.printStackTrace();
      }
}

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

      switch (reqCode) {
        case (PICK_CONTACT) :
          if (resultCode == Activity.RESULT_OK) {
              Uri contactData = data.getData();
                Cursor c =  managedQuery(contactData, null, null, null, null);
                startManagingCursor(c);
                if (c.moveToFirst()) {
                  String name = c.getString(c.getColumnIndexOrThrow(People.NAME));  
                  String number = c.getString(c.getColumnIndexOrThrow(People.NUMBER));
                  perrsonname.setText(name);
                  Toast.makeText(this,  name + " has number " + number, Toast.LENGTH_LONG).show();
                 }
           }
         break;
      }

  }

我什至需要所选联系人的附加号码(家庭、办公室等), 谁能帮我解决这个问题。对此的建议很可观。

最佳答案

  public void readcontact(){ 
    try { 
        Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
                PhoneLookup.CONTENT_FILTER_URI); // creates the contact list intent
        contactPickerIntent.setType(Contacts.Phones.CONTENT_TYPE); // selects contacts with phone only
        startActivityForResult(contactPickerIntent, PICK_CONTACT); 

    } catch (Exception e) { 
            e.printStackTrace(); 
    } 
} 
 
public void onActivityResult(int reqCode, int resultCode, Intent data) { 
      super.onActivityResult(reqCode, resultCode, data); 
 
      switch (reqCode) { 
        case (PICK_CONTACT) : 
          if (resultCode == Activity.RESULT_OK) { 
              Uri contactData = data.getData(); // has the uri for picked contact
                Cursor c = getContentResolver().query(contactData, null, null, null, null); // creates the contact cursor with the returned uri
                if (c.moveToFirst()) { 
                   String name = c.getString(c.getColumnIndex(PhoneLookup.DISPLAY_NAME));
                   String number = c.getString(c.getColumnIndex(PhoneLookup.NUMBER));
                   Toast.makeText(this,  name + " has number " + number, Toast.LENGTH_LONG).show(); 
                 } 
           } 
         break; 
      } 
 
  } 

关于android - 在 Android 中,如何选择联系人并将其显示在我的应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3830184/

相关文章:

swift - Swift 2 中的 ABAddressBook 失败

android - native 脚本 : is it simple to make listview scrollbar always visible?

android - 如何防止 NDK 将堆栈跟踪转储到 android logcat?

android - 使用 Android BLE 读取特征值

ANDROID:是否可以通过应用程序(.apk)替换 Android 操作系统的库文件?

ios - 联系人和麦克风请求访问在 iOS 9 上不起作用

Android 联系人选择 - 只有号码的联系人?

java - 理解 NsdChat 示例应用程序的问题

android - 过滤带前缀号码的联系人

android - Android 中的圆形按钮