如何将android联系人访问到数组中



我刚开始学习Android和Java,我正试图编写一个应用程序,让你可以选择你的一些联系人,获取他们的姓名和主要号码,并将他们放入单独的列表数组中。我不知道该怎么做,所以我只手动添加了它,您必须键入每个人的姓名和号码。

List<String> phnnumbers = new ArrayList<String>();
List<String> names = new ArrayList<String>();
TextView quantityTextView = (TextView) findViewById(R.id.numbersview);
// Defines the box where we will grab the numbers
EditText addnumberfieldbox = (EditText) findViewById(R.id.addnumberfield);
EditText nameboxtext = (EditText) findViewById(R.id.namebox);
// Grabs the box's contents and puts it into useable data
Editable numberfieldEditable = addnumberfieldbox.getText();
Editable nameboxEditable = nameboxtext.getText();
// Finally uses the data from the box, and puts it in
String numberfieldString = numberfieldEditable.toString();
String nameboxString = nameboxEditable.toString();
names.add(nameboxString);
phnnumbers.add(numberfieldString);

这就是我用来获取文本并将其放入数组的方法。

要访问手机的联系人列表,您需要执行以下步骤:

步骤1:在manifest.xml文件中添加访问联系人的权限

<uses-permission android:name="android.permission.READ_CONTACTS"/>

步骤2:使用以下代码获取姓名和电话号码,然后将其存储到ArrayList中。

ArrayList<JSONObject> contacts = new ArrayList<>();
public void addContacts(){
    //to store name-number pair
    JSONObject obj = new JSONObject();
    try {
        Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
        while (phones.moveToNext()) {
            String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            obj.put(name, phoneNumber);
            contacts.add(obj);
            Log.e("Contact list with name & numbers", " "+contacts);
        }
        phones.close();
    }
    catch (Exception e){
        e.printStackTrace();
    }
}

您可以在应用程序代码中使用ArrayList联系人

1-将权限放在AndroidManifest.xml上:

<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>
<application
        android:theme="@style/AppTheme" > ...

2-导入联系人合同

import android.provider.ContactsContract;

3-用电话联系人填充光标:

  ContentResolver cr = getContentResolver();
  Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
   null, null, null, null);

4-填充阵列列表

  List<String> phnnumbers = new ArrayList<String>();
  List<String> names = new ArrayList<String>();
  if (cur.getCount() > 0) {
   while (cur.moveToNext()) {
    String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
    String name = cur.getString(
cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
    String phoneNumber =  cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            names.add(name);
            phnnumbers.add(phoneNumber);
        }
  }

最新更新