Halo, berjumpa lagi dengan saya :) Kali ini saya akan memberikan tutorial di android mengenai penggunaan CALL_PHONE permission. Dalam tutorial ini, akan membangun sebuah aplikasi bernama Taxi Dialer.

Call Phone Permission pada Android

Halo, berjumpa lagi dengan saya Kali ini saya akan memberikan tutorial di android mengenai penggunaan CALL_PHONE permission. Dalam tutorial ini, akan membangun sebuah aplikasi bernama Taxi Dialer.

Sebelumnya, kita bahas terlebih dahulu permission yang akan kita gunakan dalam tutorial ini. Yang pertama adalah CALL_PHONE permission dimana mengizinkan aplikasi melakukan panggilan telepon tanpa melalui user interface Dialer bagi pengguna untuk mengkonfirmasi panggilan ditempatkan. Dan CALL_PRIVILEGED mengizinkan aplikasi untuk memanggil nomor telepon, termasuk nomor darurat, tanpa melalui user interface Dialer bagi pengguna untuk mengkonfirmasi panggilan ditempatkan.

Yang kamu butuhkan untuk membuat aplikasi ini adalah:

  1. Eclipse with ADT
  2. SDK Manager

Langsung saja buka eclipse dan Create Android Project > Nama package dan nama project bebas.

Untuk mengaktifkan 2 permission diatas, buka file AndroidManifest.xml dan tambahkan uses-permission didalam tag manifest.

<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-permission android:name="android.permission.CALL_PRIVILEGED"></uses-permission>

Setelah menambahkan permission yang dibutuhkan, langsung saja buka MainActivity.java untuk membuat activity utamanya. Dalam aplikasi ini, saya meng-extends ListActivity pada MainActivity.java sehingga akan menggunakan ListView di MainActivity ini. Karena langsung meng-extends ListActivity, jadi tidak perlu mengubah layout di res > layout, maka akan otomatis tergenerate ListView tersebut.

public class MainActivity extends ListActivity {

Kemudian buatlah array untuk menampung nama taxi.

//Buat arrray 2 dimensi untuk data taksi yang terdiri dari nama dan nomor telepon
    private String[][] taxi_data = { { "Blue Bird", "0217941234" },
            { "Express", "02126509000" }, { "Golden", "02165300333" },
            { "Prima Jasa", "0217424525" }, { "Dian", "0215807070" },
            { "Sri Medali", "0218005555" }, { "Putra", "0217815777" } };
    //Buat arrray 1 dimensi untuk keperluan pembuatan menu list provider taxi
    private String[] taxi_name = { "Blue Bird", "Express", "Golden",
            "Prima Jasa", "Dian", "Sri Medali", "Putra", "Exit" };

Karena activity ini sudah otomatis menggunakan ListView, maka didalam onCreate langsung saja set adapternya.

public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        // Create an ArrayAdapter, that will actually make the Strings above
        // appear in the ListView
        // Menset nilai array ke dalam list adapater sehingga data pada array
        // akan dimunculkan dalam list
        this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, taxi_name));
    }

Selanjutnya kita akan meng-override method onListItemClick yang berfungsi menjadi listener jika item list view di klik.

@Override
    /**method ini akan mengoveride method onListItemClick yang ada pada class List Activity
     * method ini akan dipanggil apabilai ada salah satu item dari list menu yang dipilih
     */
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        // Get the item that was clicked
        // Menangkap nilai text yang dklik
//        Object o = this.getListAdapter().getItem(position);
//        String pilihan = o.toString();
        String pilihan = this.getListAdapter().getItem(position).toString();
        // Mencek pilihan, apabila pilihan = Exit maka akan keluar dari aplikasi
        if (pilihan.equals("Exit")) {
            finish();
        } else {// pilihan != exit maka akan memanggil method callTaxi
            callTaxi(pilihan);
        }
    }

Kemudian buat method callTaxi untuk dial ke nomor yang terdapat pada array yang sudah dibuat.

/**
     * Launches the activity to make phone call to taxi provider based on
     * selected taxi
     *
     */
    protected void callTaxi(String pilihan) {
        try {
            // Intent digunakan untuk sebagai pengenal suatu activity untuk
            // membuat panggilan telepon
            Intent callIntent = new Intent(Intent.ACTION_CALL);
            String phonenumber = "";
            for (int i = 0; i < taxi_data.length; i++) {
                if (pilihan.equals(taxi_data[i][0])) {
                    phonenumber = taxi_data[i][1];
                }
            }
            if (phonenumber.equals("")) {
                Toast.makeText(this, "Provider Taxi is not register",
                        Toast.LENGTH_LONG).show();
                return;
            }
            callIntent.setData(Uri.parse("tel:" + phonenumber));
            startActivity(callIntent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Maka, code secara lengkap seperti ini:

package org.nanda.example;

import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends ListActivity {
    //Buat arrray 2 dimensi untuk data taksi yang terdiri dari nama dan nomor telepon
    private String[][] taxi_data = { { "Blue Bird", "0217941234" },
            { "Express", "02126509000" }, { "Golden", "02165300333" },
            { "Prima Jasa", "0217424525" }, { "Dian", "0215807070" },
            { "Sri Medali", "0218005555" }, { "Putra", "0217815777" } };
    //Buat arrray 1 dimensi untuk keperluan pembuatan menu list provider taxi
    private String[] taxi_name = { "Blue Bird", "Express", "Golden",
            "Prima Jasa", "Dian", "Sri Medali", "Putra", "Exit" };
    
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        // Create an ArrayAdapter, that will actually make the Strings above
        // appear in the ListView
        // Menset nilai array ke dalam list adapater sehingga data pada array
        // akan dimunculkan dalam list
        this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, taxi_name));
    }
    
    
    @Override
    /**method ini akan mengoveride method onListItemClick yang ada pada class List Activity
     * method ini akan dipanggil apabilai ada salah satu item dari list menu yang dipilih
     */
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        // Get the item that was clicked
        // Menangkap nilai text yang dklik
//        Object o = this.getListAdapter().getItem(position);
//        String pilihan = o.toString();
        String pilihan = this.getListAdapter().getItem(position).toString();
        // Mencek pilihan, apabila pilihan = Exit maka akan keluar dari aplikasi
        if (pilihan.equals("Exit")) {
            finish();
        } else {// pilihan != exit maka akan memanggil method callTaxi
            callTaxi(pilihan);
        }
    }
    /**
     * Launches the activity to make phone call to taxi provider based on
     * selected taxi
     *
     */
    protected void callTaxi(String pilihan) {
        try {
            // Intent digunakan untuk sebagai pengenal suatu activity untuk
            // membuat panggilan telepon
            Intent callIntent = new Intent(Intent.ACTION_CALL);
            String phonenumber = "";
            for (int i = 0; i < taxi_data.length; i++) {
                if (pilihan.equals(taxi_data[i][0])) {
                    phonenumber = taxi_data[i][1];
                }
            }
            if (phonenumber.equals("")) {
                Toast.makeText(this, "Provider Taxi is not register",
                        Toast.LENGTH_LONG).show();
                return;
            }
            callIntent.setData(Uri.parse("tel:" + phonenumber));
            startActivity(callIntent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Selesai sudah kita membuat satu aplikasi yang menggunakan CALL_PHONE dan CALL_PRIVILEGED permission, dan hasilnya akan seperti gambar berikut:

run2 

Misalnya klik Blue Bird, maka langsung masuk ke dialer.

run

 

Sekian tutorial dari saya, Let's Rock!


About Author

Adnan w Anadrep


Comment & Discussions

  • tolong kalau mau menambahkan sms manager ke nomor list masukan perintahnya dimana

  • Please LOGIN before if you want to give the comment.