Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将android联系人访问到阵列中_Java_Android_Arrays_Import_Android Contacts - Fatal编程技术网

Java 如何将android联系人访问到阵列中

Java 如何将android联系人访问到阵列中,java,android,arrays,import,android-contacts,Java,Android,Arrays,Import,Android Contacts,我刚刚开始使用Android和Java,我正在尝试编写一个应用程序,允许你选择一些联系人,抓取他们的姓名和主要号码,并将其放入单独的列表数组中。我不知道该怎么做,所以我只是手动添加了它,您必须键入每个人的姓名和号码 List<String> phnnumbers = new ArrayList<String>(); List<String> names = new ArrayList<String>(); TextView quantityText

我刚刚开始使用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);
List phnnumbers=new ArrayList();
列表名称=新的ArrayList();
TextView quantityTextView=(TextView)findViewById(R.id.numbersview);
//定义我们将获取数字的框
EditText addnumberfieldbox=(EditText)findViewById(R.id.addnumberfield);
EditText-nameboxtext=(EditText)findViewById(R.id.namebox);
//获取框中的内容并将其放入可用数据中
可编辑numberfieldEditable=addnumberfieldbox.getText();
可编辑的nameboxEditable=nameboxtext.getText();
//最后使用框中的数据,并将其放入
字符串numberfieldString=numberfieldEditable.toString();
String nameboxString=nameboxEditable.toString();
name.add(nameboxString);
phnnumbers.add(numberfieldString);

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

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" > ...
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);

        }
  }
List phnnumbers=new ArrayList();
列表名称=新的ArrayList();
如果(cur.getCount()>0){
while(cur.moveToNext()){
字符串id=cur.getString(cur.getColumnIndex(ContactsContract.Contacts._id));
String name=cur.getString(
cur.getColumnIndex(Contacts.Contacts.DISPLAY_NAME));
String phoneNumber=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataTypes.Phone.NUMBER));
名称。添加(名称);
phnnumbers.add(电话号码);
}
}

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

步骤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 contacts=new ArrayList();
公共联系人(){
//存储名称-数字对
JSONObject obj=新的JSONObject();
试一试{
游标phones=getContentResolver().query(ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,null,null,null);
while(phones.moveToNext()){
字符串名称=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataTypes.Phone.DISPLAY_name));
String phoneNumber=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataTypes.Phone.NUMBER));
obj.put(姓名、电话号码);
联系人。添加(obj);
Log.e(“带有姓名和号码的联系人列表”,以及“+联系人”);
}
电话。关闭();
}
捕获(例外e){
e、 printStackTrace();
}
}

您可以在应用程序代码中使用ArrayList contacts

遵循本教程=>好的,这向我解释了如何实际获取联系人,但我想知道如何允许用户从联系人列表中选择一些联系人,并仅使用他们选择的联系人,将其添加到我的阵列中(分别为编号和名称)。我是否需要将所有联系人抓取到一个不同的数组中,进行某种弹出式操作,允许用户选择一些联系人,然后将其移动到phnnumbers和names数组中?或者是否有使用联系人应用程序的内置方法?嗯,没有从电话簿中选择联系人的正式方法。因此,您必须遵循您已经提到的方法d在上面的评论中。为了获得指导,您可以按照此进行操作。谢谢,我已经了解了什么是游标以及它们有多有用。但是,我如何仅获取用户选择的联系人?有关更多信息,请参阅上面的我的评论
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();
    }
}