首页 > 解决方案 > 获取的联系号码显示重复号码(Whatsapp 和双人号码)

问题描述

我正在创建一个应用程序,它将在警报对话框中将联系人的电话号码显示为列表。我的问题是它会显示重复的号码,其中联系人在电话联系人应用程序中没有重复的号码。(我的假设是它是从 whatsapp 获取的号码,双人号码等)

这是我在 onActivityResult 中获取代码的联系人。

  if (resultCode == RESULT_OK) {
                switch (reqCode) {
                    case REQUEST_CODE:
                        final TextView phoneInput = (TextView) findViewById(R.id.contact);
                        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(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?", new String[] { id }, null);
                            phoneIdx = cursor.getColumnIndex(ContactsContract.CommonDataKinds.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 CharSequence[] items = allNumbers.toArray(new String[allNumbers.size()]);
                            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.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
            }

标签: android

解决方案


请试试这个,希望对你有帮助

Map<String, String> filteredList = new HashMap<>();
        if (resultCode == RESULT_OK) {
            switch (reqCode) {
                case REQUEST_CODE:
                    final TextView phoneInput = (TextView) findViewById(R.id.contact);
                    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(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?", new String[] { id }, null);
                        phoneIdx = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA);
                        if (cursor.moveToFirst()) {
                            while (cursor.isAfterLast() == false) {
                                phoneNumber = cursor.getString(phoneIdx);
                                allNumbers.add(phoneNumber);
                                filteredList.put(phoneNumber,"name");
                                cursor.moveToNext();
                            }
                        } else {
                            //no results actions
                        }
                    } catch (Exception e) {
                        //error actions
                    } finally {
                        if (cursor != null) {
                            cursor.close();
                        }

                        final CharSequence[] items = allNumbers.toArray(new String[allNumbers.size()]);
                        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.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
        }

推荐阅读