Jumat, 29 Juni 2012

Pemrograman Android : Menulis Menambah Contacts Phone Book pada Android

Program ini berguna kalau kita ingin menambahkan Kontak ke Phone Book atau Address Book Android secara program (memakai kode program).

Berikut ini adalah program utamanya untuk menulis atau menambah Contacts pada PhoneBook Android

MainActivity.java :


package my.amijaya.writecontacts;

import java.util.ArrayList;

import android.app.Activity;
import android.content.ContentProviderOperation;
import android.content.ContentValues;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.Contacts.People;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.widget.Toast;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //addContact("Michelle","02744444");
        //addContact("Michael","02711111");
        //addContact("Shafira","707070");
        //addContact("Angelica","085123456");
        Tambah();
    }
    

    /*private void addContact(String name, String phone) {
        ContentValues values = new ContentValues();
        values.put(People.NUMBER, phone);
        values.put(People.TYPE, Phone.TYPE_CUSTOM);
        values.put(People.LABEL, name);
        values.put(People.NAME, name);
        Uri dataUri = getContentResolver().insert(People.CONTENT_URI, values);
        Uri updateUri = Uri.withAppendedPath(dataUri, People.Phones.CONTENT_DIRECTORY);
        values.clear();
        values.put(People.Phones.TYPE, People.TYPE_MOBILE);
        values.put(People.NUMBER, phone);
        updateUri = getContentResolver().insert(updateUri, values);
      }*/
    
    private void Tambah() {
    String DisplayName = "XYZ";
    String MobileNumber = "123456";
    String HomeNumber = "1111";
    String WorkNumber = "2222";
    String emailID = "email@nomail.com";
    String company = "bad";
    String jobTitle = "abcd";

    ArrayList<ContentProviderOperation> ops = 
       new ArrayList<ContentProviderOperation>();

    ops.add(ContentProviderOperation.newInsert(
       ContactsContract.RawContacts.CONTENT_URI)
       .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
       .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
       .build()
    );

    //------------------------------------------------------ Names
    if(DisplayName != null)
    {           
       ops.add(ContentProviderOperation.newInsert(
           ContactsContract.Data.CONTENT_URI)              
           .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
           .withValue(ContactsContract.Data.MIMETYPE,
               ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
           .withValue(
               ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,     
               DisplayName).build()
       );
   

    //------------------------------------------------------ Mobile Number                      
    if(MobileNumber != null)
    {
       ops.add(ContentProviderOperation.
           newInsert(ContactsContract.Data.CONTENT_URI)
           .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
           .withValue(ContactsContract.Data.MIMETYPE,
           ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
           .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, MobileNumber)
           .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 
           ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
           .build()
       );
    }

                       //------------------------------------------------------ Home Numbers
                       if(HomeNumber != null)
                       {
                           ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                                   .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
                                   .withValue(ContactsContract.Data.MIMETYPE,
                                           ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                                   .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, HomeNumber)
                                   .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 
                                           ContactsContract.CommonDataKinds.Phone.TYPE_HOME)
                                   .build());
                       }

                       //------------------------------------------------------ Work Numbers
                       if(WorkNumber != null)
                       {
                           ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                                   .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
                                   .withValue(ContactsContract.Data.MIMETYPE,
                                           ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                                   .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, WorkNumber)
                                   .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 
                                           ContactsContract.CommonDataKinds.Phone.TYPE_WORK)
                                   .build());
                       }

                       //------------------------------------------------------ Email
                       if(emailID != null)
                       {
                            ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                                       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
                                       .withValue(ContactsContract.Data.MIMETYPE,
                                               ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
                                       .withValue(ContactsContract.CommonDataKinds.Email.DATA, emailID)
                                       .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK)
                                       .build());
                       }

                       //------------------------------------------------------ Organization
                       if(!company.equals("") && !jobTitle.equals(""))
                       {
                           ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                                   .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
                                   .withValue(ContactsContract.Data.MIMETYPE,
                                           ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)
                                   .withValue(ContactsContract.CommonDataKinds.Organization.COMPANY, company)
                                   .withValue(ContactsContract.CommonDataKinds.Organization.TYPE, ContactsContract.CommonDataKinds.Organization.TYPE_WORK)
                                   .withValue(ContactsContract.CommonDataKinds.Organization.TITLE, jobTitle)
                                   .withValue(ContactsContract.CommonDataKinds.Organization.TYPE, ContactsContract.CommonDataKinds.Organization.TYPE_WORK)
                                   .build());
                       }

                       // Asking the Contact provider to create a new contact                  
                       try 
                       {
                           getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
                       } 
                       catch (Exception e) 
                       {               
                           e.printStackTrace();
                           Toast.makeText(MainActivity.this, "Exception: " + e.getMessage(), Toast.LENGTH_SHORT).show();
                       }
    }
}


Kita gunakan saja tampilan desain layout standar, karena hanya untuk mencoba manambah contacts secara sederhana.

main.xml :


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
</LinearLayout>


Jangan lupa tambahkan permission Write Contacts dan untuk lebih amannya Read Contacts sekalian

AndroidManifest.xml :


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="my.amijaya.writecontacts"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MainActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
</manifest> 


Source Code Project selengkapnya dapat diunduh di link berikut :

https://docs.google.com/open?id=0B4i1FYc_4RXzSERvU09CaVhzT3M

Selamat mencoba