08 Mar

Android Call Phone History Programmatically

Tutorial ini berisi tentang bagaimana cara membaca phone call history melalui kode program langsung (programmatically) di device Android. Berikut langkah-langkah yang harus ditempuh:

    • Pastikan kita sudah menguasai pembuatan Hello World di Android. Kalau belum, bisa beli buku-buku android atau mencari tutorial dasar pemrograman Android atau bisa juga cari di Website ini.
    • Buat project baru standard aplikasi Android
    • Buka file AndroidManifest.xml, tambahkan permission untuk membaca contacts di HP:
<uses-permission android:name="android.permission.READ_CONTACTS" />
    • selanjutnya buat berkas custom_layout.xml di dalam folder res/layout/
<Linearlayout android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical">
<Textview android:id="@+id/call"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
</Textview>
</Linearlayout>
    • berikutnya buka kode program activity yang telah dibuat. buka pada package dan class yang tersedia, lengkap kode program menjadi berikut ini:
private void getCallDetails() {

  StringBuffer sb = new StringBuffer();
  Cursor managedCursor = managedQuery( CallLog.Calls.CONTENT_URI,null, null,null, null);
  int number = managedCursor.getColumnIndex( CallLog.Calls.NUMBER );
  int type = managedCursor.getColumnIndex( CallLog.Calls.TYPE );
  int date = managedCursor.getColumnIndex( CallLog.Calls.DATE);
  int duration = managedCursor.getColumnIndex( CallLog.Calls.DURATION);
  sb.append( "Call Details :");
  while ( managedCursor.moveToNext() ) {
    String phNumber = managedCursor.getString( number );
    String callType = managedCursor.getString( type );
    String callDate = managedCursor.getString( date );
    Date callDayTime = new Date(Long.valueOf(callDate));
    String callDuration = managedCursor.getString( duration );
  String dir = null;
  int dircode = Integer.parseInt( callType );
  switch( dircode ) {
    case CallLog.Calls.OUTGOING_TYPE:
      dir = "OUTGOING";
      break;

    case CallLog.Calls.INCOMING_TYPE:
      dir = "INCOMING";
      break;

    case CallLog.Calls.MISSED_TYPE:
      dir = "MISSED";
      break;
  }
    sb.append( "\nPhone Number:--- "+phNumber +" \nCall  Type:--- "+dir+" \nCall Date:--- "+callDayTime+" \nCall    duration in sec :--- "+callDuration );
    sb.append("\n----------------------------------");
  }
  managedCursor.close();
  call.setText(sb);
}

Selamat mencoba!

Best Regards,

Andi Taru – Founder JavaClopedia and Educa Studio