📜  如何使用游标在Android应用程序中获取已保存的联系人?

📅  最后修改于: 2021-05-09 03:08:39             🧑  作者: Mango

电话联系人对于每个人来说都是非常重要的数据源,因此访问电话联系人是Truecaller等许多应用程序的主要功能,以帮助他们的用户并提供更好的体验。我们所有人的手机中都有一个默认应用程序来管理联系人,但是如果我们创建自己的应用程序来读取所有已保存的联系人并将其显示给用户,会发生什么情况。我们可以使用该应用程序备份我们的联系人。因此,在本文中,我们将学习如何开发将读取联系人的应用程序。

我们将在本文中构建什么?

我们将构建一个简单的应用程序,其中将显示一个Button,并在单击该按钮时将所有已保存的联系人(他们的姓名和电话号码)添加到我们应用程序的ListView中。请注意,我们必须授予我们的应用程序许可以阅读我们的电话联系人。我们将使用Java语言来开发此项目。

分步实施

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。

第2步:添加权限

现在,导航到app> manifests> AndroidManifest.xml文件,并在下面添加以下权限以读取联系人。

步骤3:使用activity_main.xml文件

现在是时候设计应用程序的布局了。因此,导航到app> res> layout> activity_main.xml并将下面编写的代码粘贴到activity_main.xml文件中。

XML


  
    
    


Java
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
  
import androidx.appcompat.app.AppCompatActivity;
import androidx.cursoradapter.widget.SimpleCursorAdapter;
  
public class MainActivity extends AppCompatActivity {
    Cursor cursor;
    ListView listView;
    Button button;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // declaring listView using findViewById()
        listView = findViewById(R.id.ListView);
  
        // declaring button using findViewById()
        button = findViewById(R.id.Button);
  
        // set OnClickListener() to the button
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // calling of getContacts()
                getContacts();
            }
        });
    }
  
    public void getContacts() {
  
        // create cursor and query the data
        cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
        startManagingCursor(cursor);
  
        // data is a array of String type which is
        // used to store Number ,Names and id.
        String[] data = {ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone._ID};
        int[] to = {android.R.id.text1, android.R.id.text2};
  
        // creation of adapter using SimpleCursorAdapter class
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, cursor, data, to);
  
        // Calling setAdaptor() method to set created adapter
        listView.setAdapter(adapter);
        listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    }
}


步骤4:使用MainActivity。 Java文件

导航到应用程序> Java >程序包名称> MainActivity。 Java文件并参考以下代码。下面是MainActivity的代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。

Java

import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
  
import androidx.appcompat.app.AppCompatActivity;
import androidx.cursoradapter.widget.SimpleCursorAdapter;
  
public class MainActivity extends AppCompatActivity {
    Cursor cursor;
    ListView listView;
    Button button;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // declaring listView using findViewById()
        listView = findViewById(R.id.ListView);
  
        // declaring button using findViewById()
        button = findViewById(R.id.Button);
  
        // set OnClickListener() to the button
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // calling of getContacts()
                getContacts();
            }
        });
    }
  
    public void getContacts() {
  
        // create cursor and query the data
        cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
        startManagingCursor(cursor);
  
        // data is a array of String type which is
        // used to store Number ,Names and id.
        String[] data = {ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone._ID};
        int[] to = {android.R.id.text1, android.R.id.text2};
  
        // creation of adapter using SimpleCursorAdapter class
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, cursor, data, to);
  
        // Calling setAdaptor() method to set created adapter
        listView.setAdapter(adapter);
        listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    }
}

恭喜,现在我们的应用程序已准备就绪,因此请单击“运行”按钮。这是该应用程序的输出视频。

输出:

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处,前往由我们的专家精心策划的指南,以使您立即做好行业准备!