How to Import Contacts from Phonebook to Our Application

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



Leave a reply



Submit