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 :

Leave a Reply

Subscribe to Posts | Subscribe to Comments

Diberdayakan oleh Blogger.

Followers

- Copyright © ASIX BELAJAR ILKOM -Metrominimalist- Powered by Blogger - Designed by Rahman Anam -