Как получить имя и номер контакта из учетной записи Google и отобразить в ListView

Я создаю приложение для Android. В котором я создаю один ListView, в этом ListView я показываю контакт из списка контактов, и он работает отлично. Но всякий раз, когда я запускаю свое приложение с другими устройствами, мое приложение аварийно завершает работу. Проблема в том, что на этом устройстве они отображали контакт из своей учетной записи Google в своем списке контактов. Тогда как я могу получить имя и номер контакта из всех учетных записей, таких как Google, Facebook, Twitter, память телефона и моя сим-карта. Вот мой код, который я буду делать до сих пор, который отображает контакт только из памяти телефона. Вот мой код.

 class LoadContact extends AsyncTask<Void, Void, Void> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(Void... voids) {
        // Get Contact list from Phone
        if (phones != null) {
            Log.e("count", "" + phones.getCount());
            if (phones.getCount() == 0) {
                Toast.makeText(ReferFriend.this, "No contacts in your contact list.", Toast.LENGTH_LONG).show();
            }
            while (phones.moveToNext()) {
                String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                SelectUser selectUser = new SelectUser();
                selectUser.setContactName(name);
                selectUser.setPhone(phoneNumber);
                selectUser.setCheckedBox(false);
                //add valid object to arraylist
                selectUsers.add(selectUser);
            }
        } else {
            Log.e("Cursor close 1", "----------------");
        }
        //phones.close();
        return null;
    }
    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        adapter = new SelectUserAdapter(ReferFriend.this, selectUsers);
        listView.setAdapter(adapter);
        listView.setFastScrollEnabled(true);
    }
    }

И класс адаптера здесь.

-----------------------------------------
-----------------------------------------
public View getView(int i, View convertView, ViewGroup viewGroup) {
    View view = convertView;
    if (view == null) {
        LayoutInflater li = (LayoutInflater) _c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = li.inflate(R.layout.contact_info, null);
        Log.e("Inside", "here--------------------------- In view1");
    } else {
        view = convertView;
        Log.e("Inside", "here--------------------------- In view2");
    }

    v = new ViewHolder();

    v.title = (TextView) view.findViewById(R.id.name);
    v.check = (CheckBox) view.findViewById(R.id.check);
    v.phone = (TextView) view.findViewById(R.id.no);
    v.linearLayout = (TableLayout) view.findViewById(R.id.table);

    final SelectUser data = (SelectUser) _data.get(i);
    // Set check box listener android
    v.check.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            CheckBox checkBox = (CheckBox) view;
            if (checkBox.isChecked()) {
                data.setCheckedBox(true);
                ((ReferFriend)_c).ne.add(data.getPhone());
            } else {
                ((ReferFriend)_c).ne.remove(data.getPhone());
                data.setCheckedBox(false);
            }
        }
    });
    if (data.getPhone().length() < 10) {
        v.linearLayout.setVisibility(View.GONE);
    } else if(data.getPhone().length() == 10){
        v.title.setText(data.getContactName());
        v.phone.setText(data.getPhone());
    } else if(data.getPhone().startsWith("+")){
        v.title.setText(data.getContactName());
        v.phone.setText(data.getPhone().substring(1));
    }else if(data.getPhone().startsWith("0")){
        v.title.setText(data.getContactName());
        v.phone.setText("91"+data.getPhone().substring(1));
    }

    view.setTag(data);


    return view;
}

Пожалуйста, помогите решить эту проблему. Благодарю вас.


person user6657179    schedule 12.08.2016    source источник
comment
Проверьте это.... stackoverflow.com/questions/2112965/   -  person Dalvinder Singh    schedule 12.08.2016
comment
Я не могу понять, что вещи. Любая другая ссылка или пример. пожалуйста, и я тоже закончил с этим. прочитать все контакты, включая импортированные из facebook и т. д.»> stackoverflow.com/questions/7946766/   -  person user6657179    schedule 12.08.2016
comment
Проверьте это... stackoverflow.com/a/11428582/5341328   -  person Dalvinder Singh    schedule 12.08.2016
comment
2-я ссылка была только для учетной записи Google.. это бесполезно   -  person user6657179    schedule 12.08.2016
comment
пожалуйста, опубликуйте код, который запрашивает из базы данных контактов, вы показали только код, который использует курсор телефона, но не там, где он инициализирован. Кроме того, опубликуйте свою трассировку стека сбоя.   -  person marmor    schedule 01.12.2016