如何从谷歌帐户获取联系人姓名和号码并显示到ListView

时间:2016-08-12 05:51:24

标签: android listview contactscontract

我正在创建一个Android应用程序。我正在ListView中创建一个ListView我正在显示联系人列表中的联系人,它正在完美地工作。但每当我运行我的应用程序与其他设备我的应用程序崩溃。问题是,在该设备上,他们将联系人的谷歌帐户显示在联系人列表中。然后我如何从谷歌,Facebook,Twitter,手机内存和我的SIM卡等所有帐户获取联系人姓名和号码。这是我到目前为止所做的代码,仅显示来自手机内存的联系人。这是我的代码。

export NODE_PATH=${HOME}/node_modules

适配器类就在这里。

 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);
    }
    }

请帮忙解决这个问题。谢谢。

0 个答案:

没有答案