- Back to Home »
- MEMANFAATKAN INTENT UNTUK AKSES ACTION CALL dan ACTION DIAL Pada ANDROID
Posted by : Unknown
Minggu, 19 Oktober 2014
Aplikasi Android biasanya tidak hanya terdiri
dari satu Activity saja, mungkin saja terdiri dari dua
atau beberapa Activity yang saling mendukung. Jika Anda
seorang pengembang aplikasi Android, tentunya perpindahan dari satu Activity ke Activity yang lain harus anda atur. Dalam
aplikasi Android, perpindahan antar Activity dapat menggunakan Intent.
Dalam artikel ini intent akan dimanfaaatkan dalam
meng-akses activity panggilan dan dial pada handpone,
Langsung saja jalankan program eclipse Android
Devloper Tool, Pilih file-New-Android
Application Project
Activity yang digunakan untuk membuat layout pada
aplikasi ini menggunakan .xml untuk
activity_main.xml
Langkah pertama dengan membuka dan memasukan kode pada
activity_main.xml
di folder res-layout.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.16" >
<Button
android:id="@+id/back"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="Back" />
<TextView
android:id="@+id/l"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/hasilteks"
android:layout_below="@+id/hasilteks"
android:layout_marginTop="14dp"
android:text="" />
<TextView
android:id="@+id/hasilteks"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/textView1"
android:layout_marginTop="38dp" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="25dp"
android:text="Hasil Converter dari : " />
<TextView
android:id="@+id/teksdollar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/hasilteks"
android:layout_marginLeft="20dp"
android:layout_toRightOf="@+id/textView1"
android:text="" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/l"
android:text="CALL" />
<EditText
android:id="@+id/nohp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView2"
android:layout_marginTop="18dp"
android:ems="10" />
<Button
android:id="@+id/dial"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/panggil"
android:layout_alignBottom="@+id/panggil"
android:layout_toRightOf="@+id/textView2"
android:text="DIAL" />
<Button
android:id="@+id/panggil"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/nohp"
android:layout_marginTop="30dp"
android:layout_toRightOf="@+id/teksdollar"
android:text="PANGGIL" />
</RelativeLayout>
</LinearLayout>
Langkah ke dua membuat beberapa fungsi dengan cara membuka dan memasukan kode pada target.java di folder rsc
package com.example.convertermatauang;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class target extends Activity implements OnClickListener{
TextView hasil ;
TextView teksdollar ;
Button panggil;
Button dial;
EditText nohp;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tampilankedua);
Button move = (Button)findViewById(R.id.back);
move.setOnClickListener(this);
hasil = (TextView)findViewById(R.id.hasilteks);
teksdollar = (TextView)findViewById(R.id.teksdollar);
nohp = (EditText) findViewById(R.id.nohp);
panggil = (Button)findViewById(R.id.panggil);
dial = (Button)findViewById(R.id.dial);
// add PhoneStateListener for monitoring
MyPhoneListener phoneListener = new MyPhoneListener();
TelephonyManager telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
// receive notifications of telephony state changes
telephonyManager.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE);
Intent callingintent = getIntent();
String dollar = callingintent.getStringExtra("dollar");
String rupiah = callingintent.getStringExtra("hasilconvert");
//int magicnumber = callingintent.getIntExtra("magicvalue", -1);
teksdollar.setText(teksdollar.getText()+""+dollar);
hasil.setText(hasil.getText()+""+rupiah);
//labeltext.setText(""+magicnumber);
panggil.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
// set the data
//menjalankan aksi panggilan menggunakan intent
String uri = "tel:"+nohp.getText().toString();
Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse(uri));
startActivity(callIntent);
}catch(Exception e) {
Toast.makeText(getApplicationContext(),"Your call has failed...",
Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
});
dial.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
//menjalankan aksi dial menggunakan intent
String uri = "tel:"+nohp.getText().toString();
Intent dialIntent = new Intent(Intent.ACTION_DIAL, Uri.parse(uri));
startActivity(dialIntent);
}catch(Exception e) {
Toast.makeText(getApplicationContext(),"Your call has failed...",
Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
});
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent back = new Intent(this, MainActivity.class);
startActivity(back);
}
private class MyPhoneListener extends PhoneStateListener {
private boolean onCall = false;
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
// phone ringing...
Toast.makeText(target.this, incomingNumber + " calls you",
Toast.LENGTH_LONG).show();
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
// one call exists that is dialing, active, or on hold
Toast.makeText(target.this, "on call...",
Toast.LENGTH_LONG).show();
//because user answers the incoming call
onCall = true;
break;
case TelephonyManager.CALL_STATE_IDLE:
// in initialization of the class and at the end of phone call
// detect flag from CALL_STATE_OFFHOOK
if (onCall == true) {
Toast.makeText(target.this, "restart app after call",
Toast.LENGTH_LONG).show();
// restart our application
Intent restart = getBaseContext().getPackageManager().
getLaunchIntentForPackage(getBaseContext().getPackageName());
restart.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(restart);
onCall = false;
}
break;
default:
break;
}
}
}
}
Langkah yang terakhir tambahkan permition pada AndroidManifest.Xml agar mendapatkan ijin untuk melakukan panggilan
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.convertermatauang"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.convertermatauang.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>
<activity
android:name="com.example.convertermatauang.target"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
Jalankan aplikasinya project → Run as → Android Application.
Berikut screenshoot dari aplikasi ini
Sumber referensi :