Call Phone Permission pada Android Oleh: Adnan w Anadrep
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.
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 android:name="android.permission.CALL_PRIVILEGED"> 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 import import import import import import import import
android.app.Activity; android.app.ListActivity; android.content.Intent; android.net.Uri; android.os.Bundle; android.view.View; android.widget.ArrayAdapter; android.widget.ListView; 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:
Misalnya klik Blue Bird, maka langsung masuk ke dialer.
Sekian tutorial dari saya, Let's Rock!
Tentang Penulis Adnan w Anadrep