簡體   English   中英

如何獲取給定列表中的聯系人

[英]How to get contacts which are in the given list

我的目的是設置一個來自 API 的列表,其中包括我的應用程序用戶的電話號碼。 所以我只需要查看此列表中的聯系人。 但我不知道如何設置下面的代碼來做到這一點。 我的意思是在下面,它會打開手機中所有聯系人的聯系人。 我不需要查看所有聯系人,但需要查看給定列表中的聯系人

Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
                startActivityForResult(contactPickerIntent,1);

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        switch (requestCode){
            case 1 :
                if (resultCode == Activity.RESULT_OK) {
                    Uri contactData = data.getData();
                    ContentResolver cr = getContentResolver();
                    Cursor cur = cr.query(contactData, null, null, null, null);
                    if (cur.getCount() > 0) {// thats mean some resutl has been found
                        if(cur.moveToNext()) {
                            String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
                            String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                            Log.e("Names", name);
                            if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
                            {
                                // Query phone here. Covered next
                                Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id,null, null);
                                while (phones.moveToNext()) {
                                    String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                                    Log.e("Number", phoneNumber);
                                }
                               phones.close();
                            }

                        }
                    }
                    cur.close();
                }
                break;
        }
    }

考慮到您已經有一個list ,其中包含來自 API 的數據,並創建一個新列表,其中將包含來自API listContentResolver的公共元素,現在將元素添加到您想要的列表中,在ContentResolver中檢查PhoneNumber是否在 ZDB974238714CAACE4FZA 列表中,然后再添加到 ZDB974238714CAACE4F634 output。

ArrayList<String> apiPhoneNumbers;// this data is populated by API
ArrayList<String> commonPhoneNumbers = new ArrayList<>();
//inside onActivityResult
if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0){
  // Query phone here. Covered next
  Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id,null, null);
  while (phones.moveToNext()) {
      String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
      Log.e("Number", phoneNumber);
      if(apiPhoneNumbers.contains(phoneNumber)){//add to output only if it is in API list
          commonPhoneNumbers.add(phoneNumber);
      }
  }
  phones.close();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM