Import contacts from phone to list in my app in android
Try this Example Worked for me.
First of all you need to set permission in your mainifest file. Your Mainifest file should look something like this.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="in.wptrafficanalzer.listviewcontacts"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="5"
android:targetSdkVersion="15" />
<uses-permission
android:name="android.permission.READ_CONTACTS" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
after you are done with this you need to create Two XML Files in your layout folder.
activity_main.xml
<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" >
<ListView
android:id="@+id/lst_contacts"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
lv_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:textSize="20dp"
android:textStyle="bold" />
<ImageView
android:id="@+id/iv_photo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tv_name"
android:layout_centerHorizontal="true"
android:padding="5dp" />
<TextView
android:id="@+id/tv_details"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/iv_photo"
/>
</RelativeLayout>
after creating the layout files your MainActivity class will look something like this.
MainActivity.Java
public class MainActivity extends Activity {
SimpleCursorAdapter mAdapter;
MatrixCursor mMatrixCursor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// The contacts from the contacts content provider is stored in this
// cursor
mMatrixCursor = new MatrixCursor(new String[] { "_id", "name", "photo",
"details" });
// Adapter to set data in the listview
mAdapter = new SimpleCursorAdapter(getBaseContext(),
R.layout.lv_layout, null, new String[] { "name", "photo",
"details" }, new int[] { R.id.tv_name, R.id.iv_photo,
R.id.tv_details }, 0);
// Getting reference to listview
ListView lstContacts = (ListView) findViewById(R.id.lst_contacts);
// Setting the adapter to listview
lstContacts.setAdapter(mAdapter);
// Creating an AsyncTask object to retrieve and load listview with
// contacts
ListViewContactsLoader listViewContactsLoader = new ListViewContactsLoader();
// Starting the AsyncTask process to retrieve and load listview with
// contacts
listViewContactsLoader.execute();
}
/** An AsyncTask class to retrieve and load listview with contacts */
private class ListViewContactsLoader extends AsyncTask<Void, Void, Cursor> {
@Override
protected Cursor doInBackground(Void... params) {
Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
// Querying the table ContactsContract.Contacts to retrieve all the
// contacts
Cursor contactsCursor = getContentResolver().query(contactsUri,
null, null, null,
ContactsContract.Contacts.DISPLAY_NAME + " ASC ");
if (contactsCursor.moveToFirst()) {
do {
long contactId = contactsCursor.getLong(contactsCursor
.getColumnIndex("_ID"));
Uri dataUri = ContactsContract.Data.CONTENT_URI;
// Querying the table ContactsContract.Data to retrieve
// individual items like
// home phone, mobile phone, work email etc corresponding to
// each contact
Cursor dataCursor = getContentResolver().query(dataUri,
null,
ContactsContract.Data.CONTACT_ID + "=" + contactId,
null, null);
String displayName = "";
String nickName = "";
String homePhone = "";
String mobilePhone = "";
String workPhone = "";
String photoPath = "" + R.drawable.blank;
byte[] photoByte = null;
String homeEmail = "";
String workEmail = "";
String companyName = "";
String title = "";
if (dataCursor.moveToFirst()) {
// Getting Display Name
displayName = dataCursor
.getString(dataCursor
.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
do {
// Getting NickName
if (dataCursor
.getString(
dataCursor
.getColumnIndex("mimetype"))
.equals(ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE))
nickName = dataCursor.getString(dataCursor
.getColumnIndex("data1"));
// Getting Phone numbers
if (dataCursor
.getString(
dataCursor
.getColumnIndex("mimetype"))
.equals(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)) {
switch (dataCursor.getInt(dataCursor
.getColumnIndex("data2"))) {
case ContactsContract.CommonDataKinds.Phone.TYPE_HOME:
homePhone = dataCursor.getString(dataCursor
.getColumnIndex("data1"));
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE:
mobilePhone = dataCursor
.getString(dataCursor
.getColumnIndex("data1"));
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_WORK:
workPhone = dataCursor.getString(dataCursor
.getColumnIndex("data1"));
break;
}
}
// Getting EMails
if (dataCursor
.getString(
dataCursor
.getColumnIndex("mimetype"))
.equals(ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)) {
switch (dataCursor.getInt(dataCursor
.getColumnIndex("data2"))) {
case ContactsContract.CommonDataKinds.Email.TYPE_HOME:
homeEmail = dataCursor.getString(dataCursor
.getColumnIndex("data1"));
break;
case ContactsContract.CommonDataKinds.Email.TYPE_WORK:
workEmail = dataCursor.getString(dataCursor
.getColumnIndex("data1"));
break;
}
}
// Getting Organization details
if (dataCursor
.getString(
dataCursor
.getColumnIndex("mimetype"))
.equals(ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)) {
companyName = dataCursor.getString(dataCursor
.getColumnIndex("data1"));
title = dataCursor.getString(dataCursor
.getColumnIndex("data4"));
}
// Getting Photo
if (dataCursor
.getString(
dataCursor
.getColumnIndex("mimetype"))
.equals(ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)) {
photoByte = dataCursor.getBlob(dataCursor
.getColumnIndex("data15"));
if (photoByte != null) {
Bitmap bitmap = BitmapFactory
.decodeByteArray(photoByte, 0,
photoByte.length);
// Getting Caching directory
File cacheDirectory = getBaseContext()
.getCacheDir();
// Temporary file to store the contact image
File tmpFile = new File(
cacheDirectory.getPath() + "/wpta_"
+ contactId + ".png");
// The FileOutputStream to the temporary
// file
try {
FileOutputStream fOutStream = new FileOutputStream(
tmpFile);
// Writing the bitmap to the temporary
// file as png file
bitmap.compress(
Bitmap.CompressFormat.PNG, 100,
fOutStream);
// Flush the FileOutputStream
fOutStream.flush();
// Close the FileOutputStream
fOutStream.close();
} catch (Exception e) {
e.printStackTrace();
}
photoPath = tmpFile.getPath();
}
}
} while (dataCursor.moveToNext());
String details = "";
// Concatenating various information to single string
if (homePhone != null && !homePhone.equals(""))
details = "HomePhone : " + homePhone + "\n";
if (mobilePhone != null && !mobilePhone.equals(""))
details += "MobilePhone : " + mobilePhone + "\n";
if (workPhone != null && !workPhone.equals(""))
details += "WorkPhone : " + workPhone + "\n";
if (nickName != null && !nickName.equals(""))
details += "NickName : " + nickName + "\n";
if (homeEmail != null && !homeEmail.equals(""))
details += "HomeEmail : " + homeEmail + "\n";
if (workEmail != null && !workEmail.equals(""))
details += "WorkEmail : " + workEmail + "\n";
if (companyName != null && !companyName.equals(""))
details += "CompanyName : " + companyName + "\n";
if (title != null && !title.equals(""))
details += "Title : " + title + "\n";
// Adding id, display name, path to photo and other
// details to cursor
mMatrixCursor.addRow(new Object[] {
Long.toString(contactId), displayName,
photoPath, details });
}
} while (contactsCursor.moveToNext());
}
return mMatrixCursor;
}
@Override
protected void onPostExecute(Cursor result) {
// Setting the cursor containing contacts to listview
mAdapter.swapCursor(result);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
How to pick contact number from phone-book of android in to my application?
try this code,
@Override
public void onActivityResult(int reqCode, int resultCode, Intent
data){
super.onActivityResult(reqCode, resultCode, data);
switch(reqCode){
case (PICK_CONTACT):
if (resultCode == Activity.RESULT_OK)
{
Uri contactData = data.getData();
Cursor c = managedQuery(contactData, null, null, null, null);
if (c.moveToFirst()) {
String id =
c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String hasPhone =
c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (hasPhone.equalsIgnoreCase("1")) {
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id,
null, null);
phones.moveToFirst();
String cNumber = phones.getString(phones.getColumnIndex("data1"));
}
}
}
}
importing from phone contacts to my application in iphone
I hope this will be useful. I made that for you http://www.jorgedelprado.com.ar/ABExample.zip
how to access contacts in my android program
use this code to pick contact:
Button button = (Button)findViewById(R.id.pickcontact);
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
}
});
@Override public void onActivityResult(int reqCode, int resultCode, Intent data){ super.onActivityResult(reqCode, resultCode, data);
switch(reqCode)
{
case (PICK_CONTACT):
if (resultCode == Activity.RESULT_OK)
{
Uri contactData = data.getData();
Cursor c = managedQuery(contactData, null, null, null, null);
if (c.moveToFirst())
{
String id = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String hasPhone =
c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (hasPhone.equalsIgnoreCase("1"))
{
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id,null, null);
phones.moveToFirst();
String cNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// Toast.makeText(getApplicationContext(), cNumber, Toast.LENGTH_SHORT).show();
setCn(cNumber);
}
}
}
}
}
Related Topics
How to Use Mkfifo Using Android's Ndk
How to Show Text in Android System Status Bar
Realm with Pre Populated Data into Assets
Writing/Reading Files To/From Android Phone's Internal Memory
Outofmemory Exception When Loading Bitmap from External Storage
Android.Intent.Action.Screen_On Doesn't Work as a Receiver Intent Filter
Firebase Sort by Points Depending on Date
Nexus 5X Reverse Landscape Sensor Fix in a Android Camera Preview App
Cannot Call Getsupportfragmentmanager() from Activity
Youtube Video Not Playing in Webview
Garbage Collection Causes:Mediaplayer Finalized Without Being Released