Hello, all learners. Welcome to Android Contacts tutorial with example.
In this get contact list details Android Studio programmatically tutorial we will learn how to retrieve contact name, phone number, email, etc. information in Android app programmatically.
Two examples are there in this post as per the below.
1. Android Get Contact Details Programmatically
Contact based application will need to access contact details, this tutorial will guide you for this purpose.
First, check the output of get contact list details Android Studio programmatically then we will implement it.
Step 2: Updating AndroidManifest.xml file
add required permissions between <manifest>….</manifest> tag.
<uses-permission android:name="android.permission.READ_CONTACTS" />
Final code for AndroidManifest.xml file
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.exampledemo.parsaniahardik.getcontactdetailsdemonuts"> <uses-permission android:name="android.permission.READ_CONTACTS" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Step 3: Updating activity_main.xml file
We will make user interface for getting name, phone number and email address.
Three textviews are used for this purpose.
Copy and paste below source code in activity_main.xml file
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.exampledemo.parsaniahardik.getcontactdetailsdemonuts.MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:id="@+id/tvname" android:textColor="#000" android:text="Name:"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:id="@+id/tvphone" android:textColor="#000" android:text="Phone:"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:id="@+id/tvmail" android:textColor="#000" android:text="Email:"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:id="@+id/btn" android:text="Select contact" /> </LinearLayout>
Step 4: Preparing MainActivity.java class
Add following source code in MainActivity.java class
import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.provider.ContactsContract; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private Button btn; private TextView tvname, tvphone,tvmail; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.btn); tvname = (TextView) findViewById(R.id.tvname); tvphone = (TextView) findViewById(R.id.tvphone); tvmail = (TextView) findViewById(R.id.tvmail); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, 1); } }); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK) { Uri contactData = data.getData(); Cursor c = getContentResolver().query(contactData, null, null, null, null); if (c.moveToFirst()) { String phoneNumber="",emailAddress=""; String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); String contactId = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID)); //http://stackoverflow.com/questions/866769/how-to-call-android-contacts-list our upvoted answer String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); if ( hasPhone.equalsIgnoreCase("1")) hasPhone = "true"; else hasPhone = "false" ; if (Boolean.parseBoolean(hasPhone)) { Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null); while (phones.moveToNext()) { phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); } phones.close(); } // Find Email Addresses Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,null, null); while (emails.moveToNext()) { emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); } emails.close(); //mainActivity.onBackPressed(); // Toast.makeText(mainactivity, "go go go", Toast.LENGTH_SHORT).show(); tvname.setText("Name: "+name); tvphone.setText("Phone: "+phoneNumber); tvmail.setText("Email: "+emailAddress); Log.d("curs", name + " num" + phoneNumber + " " + "mail" + emailAddress); } c.close(); } } }
Step 5: Description of MainActivity.java
Following source code will open contact list on button click.
btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, 1); } });
After clicking on contact list item, onActivityResult() method is called.
Below line will get name of contact
String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
Below source code will check whether contact has a phone number or not.
String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); if ( hasPhone.equalsIgnoreCase("1")) hasPhone = "true"; else hasPhone = "false" ;
If contact has phone number, then it will be got by following
if (Boolean.parseBoolean(hasPhone)) { Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null); while (phones.moveToNext()) { phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); } phones.close(); }
Following source code will take the Email address.
// Find Email Addresses Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,null, null); while (emails.moveToNext()) { emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); } emails.close();
Then finally, all text are set in respected textviews
tvname.setText("Name: "+name); tvphone.setText("Phone: "+phoneNumber); tvmail.setText("Email: "+emailAddress);
So all for get contact list details android studio programmatically example tutorial. Thank you.
2. Android Get Contact List And Display in ListView
Welcome to android get contact list with phone numbers tutorial.
Get contact list in Android Studio example guides you to get a contact list and show in the custom listview.
Get contact list in Android example will show how to show all contacts alphabetically.
First, go through the output, then we will develop with Android Studio.
Step 2: Updating AndroidManifest.xml file
add required permissions between <manifest>….</manifest> tag.
<uses-permission android:name="android.permission.READ_CONTACTS" />
Final code for AndroidManifest.xml file
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.exampledemo.parsaniahardik.contactlistviewdemonuts"> <uses-permission android:name="android.permission.READ_CONTACTS" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Step 3: Adding ListView Item file
Make a new layout resource file named “lv_item.xml”
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#fff" android:textSize="25sp" android:gravity="center_vertical" android:paddingLeft="10dp" android:layout_marginTop="10dp" android:text="Name" /> <TextView android:id="@+id/number" android:text="ds" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#fff" android:textSize="25sp" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" /> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginTop="10dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:background="@color/colorAccent"/> </LinearLayout>
Step 4: Creating a model class
Create a new class named “ContactModel.”
public class ContactModel { private String name, number; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } }
Step 5: Making a custom adapter class
Prepare a new class and give a name as “CustomAdapter.”
import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.ArrayList; /** * Created by Parsania Hardik on 11-May-17. */ public class CustomAdapter extends BaseAdapter { private Context context; private ArrayList<ContactModel> contactModelArrayList; public CustomAdapter(Context context, ArrayList<ContactModel> contactModelArrayList) { this.context = context; this.contactModelArrayList = contactModelArrayList; } @Override public int getViewTypeCount() { return getCount(); } @Override public int getItemViewType(int position) { return position; } @Override public int getCount() { return contactModelArrayList.size(); } @Override public Object getItem(int position) { return contactModelArrayList.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.lv_item, null, true); holder.tvname = (TextView) convertView.findViewById(R.id.name); holder.tvnumber = (TextView) convertView.findViewById(R.id.number); convertView.setTag(holder); }else { // the getTag returns the viewHolder object set as a tag to the view holder = (ViewHolder)convertView.getTag(); } holder.tvname.setText(contactModelArrayList.get(position).getName()); holder.tvnumber.setText(contactModelArrayList.get(position).getNumber()); return convertView; } private class ViewHolder { protected TextView tvname, tvnumber; } }
Step 6: Updating MainActivity
Update activity_main.xml as below source code
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.exampledemo.parsaniahardik.contactlistviewdemonuts.MainActivity"> <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/listView" android:divider="@null" /> </RelativeLayout>
Update MainActivity.java class as following
import android.database.Cursor; import android.provider.ContactsContract; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.ListView; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private ListView listView; private CustomAdapter customAdapter; private ArrayList<ContactModel> contactModelArrayList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.listView); contactModelArrayList = new ArrayList<>(); Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+" ASC"); while (phones.moveToNext()) { String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); ContactModel contactModel = new ContactModel(); contactModel.setName(name); contactModel.setNumber(phoneNumber); contactModelArrayList.add(contactModel); Log.d("name>>",name+" "+phoneNumber); } phones.close(); customAdapter = new CustomAdapter(this,contactModelArrayList); listView.setAdapter(customAdapter); } }
Step 7: Describing MainActivity.java class
Let’s make an eye on below source code
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+" ASC"); while (phones.moveToNext()) { String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); ContactModel contactModel = new ContactModel(); contactModel.setName(name); contactModel.setNumber(phoneNumber); contactModelArrayList.add(contactModel); Log.d("name>>",name+" "+phoneNumber); } phones.close();
We are using Cursor class to get details about contacts.
We will store contact’s name and phone number in two different variables.
After that, we will create a object of ContactModel class and will add this object to the contactModelArrayList.
After getting all the contacts information, we will set whole information in ListView.
So the end for get contact list in android studio programmatically tutorial. Thank you.