Skip to main content

KOMPONEN ANDROID INTENT




Pengenalan Intent


Intent adalah mekanisme untuk melakukan sebuah action dan komunikasi antar komponen aplikasi misal activity, services, dan broadcast receiver. Ada tiga penggunaan umum intent dalam aplikasiAndroid yaitu: 
• Memindahkan satu activity ke activity lain dengan atau tidak membawa data. 
• Menjalankan background service, misalnya melakukan sinkronisasi ke server dan menjalankan proses berulang (periodic/scheduler task). 
• Mengirimkan obyek broadcast ke aplikasi yang membutuhkan. Misal, ketika aplikasi membutuhkan proses menjalankan sebuah background service setiap kali aplikasi selesai melakukan booting. Aplikasi harus bisa menerima obyek broadcastyang dikirimkan oleh sistemAndroid untuk event booting tersebut.

Intent memiliki dua bentuk yaitu:

1. Explicit Intent
Adalah tipe Intent yang digunakan untuk menjalankan komponen dari dalam sebuah aplikasi. Explicit intent bekerja dengan menggunakan nama kelas yang dituju misal : com.touvan.activity.DetailActivity. Umumnya intent ini digunakan untuk mengaktifkan komponen pada satu aplikasi.

2. Implicit Intent 
Adalah tipe intent yang tidak memerlukan detail nama kelas yang ingin diaktifkan. Model ini memungkinkan komponen dari aplikasi lain bisa merespon request intent yang dijalankan. Penggunaan tipe intent ini umumnya diperuntukan untuk menjalankan fitur/fungsi dari komponen aplikasi lain. Contohnya ketika kita membutuhkan fitur untuk mengambil foto. Daripada membuat sendiri fungsi kamera, lebih baik kita menyerahkan proses tersebut pada aplikasi kamera bawaan dari peranti atau aplikasi kamera lain yang telah terinstal sebelumnya di peranti.

Hal yang sama misalnya ketika kita membutuhkan fungsi berbagi konten. Kita bisa memanfaatkan intent untuk menampilkan aplikasi mana saja yang bisa menangani fitur tersebut. Implementasi implicit intent ini akan sangat memudahkan bagi pengembang agar tetap fokus pada proses bisnis inti dari aplikasi yang dikembangkan.

Latihan Intent

Latihan intent menitik beratkan pada implementasi intent untuk melakukan perpindahan dari activity ke activity lain, dengan atau tidak membawa data. Beberapa bagian dari latihan ini akan menjawab beberapa pertanyaan umum dalam pengembangan aplikasi Android sebagai berikut: 

• Bagaimana berpindah dari satu activity ke activity lain? 
• Bagaimana berpindah dari satu activity ke activity lain dengan membawa data? 
    o Single value dari suatu variabel. 
    o Obyek model Plain Old Java Object (POJO). 
• Menjalankan komponen di aplikasi lain untuk keperluan membuka browser atau melakukan pemanggilan melalui aplikasi telepon bawaan? 
• Mengirimkan hasil nilai balik melalui Intent

Logika Dasar 
Berpindah dari satu Activity ke Activity lain dengan membawa data. Activity asal akan mengirimkan data melalui Intent danActivity tujuan akan menerima data yang dikirimkan.

Saya akan mencoba membuat projectnya
1. Buat Project baru diAndroid Studio dengan kriteria sebagai berikut : 
    o Nama Project : AppBelajarIntent 
    o Target & Minimum Target SDK: Phone, Api level 22: Android 5.1 (Lollipop)
    o Tipe Activity : Empty Activity 
    o Activity Name : MainActivity

2. Buatkan tampilan antarmuka seperti disamping.
 
1

3. Kita akan memiliki 5 tombol dengan fungsi yang berbeda-beda dan 1 buah TextView untuk menampilkan data yang berasal dari intent. 
Baik, kita akan mulai selangkah demi selangkah dimulai dari tombol yang paling atas. 
Kondisikan activity_main.xml menjadi seperti ini : 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:orientation="vertical"
tools:context="com.touvan.appbelajarintent.MainActivity">

<Button
android:id="@+id/btn_move_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Berpindah Activity"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

</LinearLayout>
Jangan lupa untuk menambahkan file dimens.xml secara manual di dalam res → values.  Dan isikan file dimens.xml  seperti berikut :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="activity_horizontal_margin">16dp</dimen>
</resources>
4. Juga jangan lupa atur colors.xml didalam res → values. dan isikan sebagai berikut : 
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
</resources>
5. Lalu untuk MainActivity.java tambahkan beberapa baris seperti ini. 
package com.touvan.appbelajarintent;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btnMoveActivity;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
btnMoveActivity.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_move_activity:
break;
}
}
}
6. Button btnMoveActivity akan memiliki fungsi untuk berpindah activity ke activity lain. Sekarang kita buat Activity baru dengan cara sebagai berikut: Klik kanan di package utama aplikasi package name → New → Activity → Empty Activity. Lalu isikan MoveActivity pada Activity Namenya. Ketika sudah klik Finish. 


7. Untuk menandakan bahwa perpindahan activity berhasil, silakan tambahkan satu TextView dan kondisikan activity_move.xml menjadi seperti berikut.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
tools:context="com.touvan.appbelajarintent.MoveActivity">

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Ini Adalah MoveActivity"/>

</RelativeLayout>
8. Setelah activity tujuan sudah berhasil diciptakan, sekarang saatnya menambahkan suatu intent pada method onClick() di MainActivity.java menjadi sebagai berikut. 
package com.touvan.appbelajarintent;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btnMoveActivity;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
btnMoveActivity.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_move_activity:
Intent moveIntent = new Intent(MainActivity.this,MoveActivity.class);
startActivity(moveIntent);
break;
}
}
}
Selesai! Langkah pertama untuk memindahkan satu activity ke activity lain sudah selesai, sekarang silakan jalankan aplikasi Anda dengan mengklik tombol pada menu bar. Seharusnya sekarang anda sudah bisa memindahkan activity dengan mengklik tombol ‘Berpindah Activity’. Hasil :


Selanjutnya kita akan membuat sebuah intent yang didalamnya akan membawa data ke activity tujuan. Anda Siap? 

1. Sebelumnya buatkan terlebih dahulu activity baru dengan Activity Name MoveWithDataActivity
Buka activity_main.xml, kemudian tambahkan satu tombol lagi dibawah tombol sebelumnya, sehingga kode activity_main.xml kita menjadi seperti ini.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:orientation="vertical"
tools:context="com.touvan.appbelajarintent.MainActivity">

<Button
android:id="@+id/btn_move_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Berpindah Activity"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

<Button
android:id="@+id/btn_move_activity_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Berpindah Activity Dengan Data"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>


</LinearLayout>
2. Setelah selesai dengan penambahan pada berkas activity_main.xml, maka lanjutkan dengan menambahkan beberapa baris berikut di MainActivity.java.
package com.touvan.appbelajarintent;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btnMoveActivity;
private Button btnMoveWithDataActivity;
private Button btnMoveWithObjectActivity;
private Button btnDialPhone;
private Button btnMoveForResult;
private TextView tvResult;
private int REQUEST_CODE = 100;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
btnMoveActivity.setOnClickListener(this);
btnMoveWithDataActivity = (Button)findViewById(R.id.btn_move_activity_data);
btnMoveWithDataActivity.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_move_activity:
Intent moveIntent = new Intent(MainActivity.this,MoveActivity.class);
startActivity(moveIntent);
break;

case R.id.btn_move_activity_data:
break;
}
}
}
3. Selanjutnya pada layout activity_move_with_data.xml kita tambahkan sebuah TextView ber-ID untuk menampilkan data yang dikirimkan dari Activity asal.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
tools:context="com.touvan.appbelajarintent.MoveWithDataActivity">

<TextView
android:id="@+id/tv_data_received"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Data Received"/>

</RelativeLayout>
4. Selanjutnya pada MoveWithDataActivity.java kita kondisikan menjadi seperti berikut :
package com.touvan.appbelajarintent;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;

public class MoveWithDataActivity extends AppCompatActivity {
public static String EXTRA_AGE = "extra_age";
public static String EXTRA_NAME = "extra_name";
private TextView tvDataReceived;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_move_with_data);
tvDataReceived = (TextView)findViewById(R.id.tv_data_received);
String name = getIntent().getStringExtra(EXTRA_NAME);
int age = getIntent().getIntExtra(EXTRA_AGE,0);
String text = "Name : "+name+"\n" +
"Your Age : "+age;
tvDataReceived.setText(text);
}
}
5. Dan sekarang saatnya kita menambahkan obyek Intent pada MainActivity.java seperti baris yang ditebalkan. 
package com.touvan.appbelajarintent;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btnMoveActivity;
private Button btnMoveWithDataActivity;
private Button btnMoveWithObjectActivity;
private Button btnDialPhone;
private Button btnMoveForResult;
private TextView tvResult;
private int REQUEST_CODE = 100;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
btnMoveActivity.setOnClickListener(this);
btnMoveWithDataActivity = (Button)findViewById(R.id.btn_move_activity_data);
btnMoveWithDataActivity.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_move_activity:
Intent moveIntent = new Intent(MainActivity.this,MoveActivity.class);
startActivity(moveIntent);
break;

case R.id.btn_move_activity_data:
Intent moveWithDataIntent = new Intent(MainActivity.this,MoveWithDataActivity.class);
moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_NAME, "Touvan Rafli Wiandri");
moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_AGE,20);
startActivity(moveWithDataIntent);
break;
}
}
}
6. Silakan jalankan aplikasi Anda, kemudian coba klik pada tombol ‘Pindah Activity dengan Data’. Seharusnya Anda sudah bisa memindahkan satu activity ke activity lain dengan membawa data.


Selamat! Anda telah mempelajari dua intent explicit dengan atau tidak membawa data.  Sebelumnya, mengirimkan data bernilai tunggal dari satu activity ke activity lain adalah hal yang mudah. Bernilai tunggal karena data yang dikirimkan berasal dari satu tipe data.
Misalnya pada contoh di atas, pengiriman nilai data name dan age dilakukan secara sendirisendiri. Yang satu bertipe data string dan yang lainnya bertipe data integer. 
Sekarang pertanyaanya bagaimana Anda bisa mengirimkan data dalam bentuk Plain Old Java Object (POJO) dari satu activity ke activity lain melalui intent? Caranya adalah dengan mengubah obyek POJO yang Anda miliki ke dalam bentuk obyek parcelable. Di Android Studio sudah ada fasilitas plugin bernama Android Parcelable Generator untuk memudahkan proses tersebut.
Selanjutnya, kita akan membuat sbeuah intent yang di dalamnya akan membawa data dengan Plain Old Java Object (POJO) ke activity tujuan. 

Bagi yang belum mengenal apa itu Plain Old Java Object (POJO), berikut penjelasan singkatnya. POJO adalah sebuah kelas Java biasa yang tidak bergantung dengan kelas lain. Umumnya kelas POJO ini disebut sebagai kelas Java yang memiliki properti/variabel dan metode setter-getter. Seperti dibawah ini. 

1. Sebelum membuat obyek parcelable, kita buat kelas Java POJO terlebih dahulu. Caranya, klik kanan pada package utama proyek → New → Java Class


2. Pada dialog, isikan nama kelas dengan ‘Person’. Lalu klik OK.


3. Setelah selesai terbentuk kelas Person, kondisikan kelas tersebut menjadi seperti ini. 
package com.touvan.appbelajarintent;

import android.os.Parcel;
import android.os.Parcelable;

public class Person implements Parcelable {
private String name;
private int age;
private String email;
private String city;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getCity() {
return city;
}

public void setCity(String city) {
this.city = city;
}
}
Anda tidak perlu menulis satu per satu metode setter-getter nya, di Android Studio tersedia fasilitas generator untuk hal tersebut. Caranya, setelah Anda menentukan variabel apa saja yang akan digunakan lakukan, lakukan beberapa langkah sebagai berikut : Klik kanan pilih Generate atau bisa Alt+Insert pada workspace. 


5. Pilih semua variabel dengan cara Ctrl+A pada windows dan Command+A pada mac. Bila sudah, maka klik OK. Secara otomatis metode setter dan getter masing-masing variabel akan dibuatkan.

Selanjutnya kita akan menambahkan plugin Android Parcelable Generator pada Android Studio. Plugin ini berguna untuk mengubah kelas POJO menjadi obyek Parcelable. Langkahlangkahnya sebagai berikut : 

1. Buka settings dengan cara File → Settings → Plugins
2. Dan inputkan "Android Parcelable" pada search box kemudian tekan Enter. 
3. Klik browse, dengan ini kita memerintahkan Android Studio untuk melakukan pencarian plugin di server. Setelah ketemu Android Parcelable code generator, klik Install. 


4. Biarkan Android Studio melakukan proses instalasi plugin. Bila sukses, maka Anda akan diminta untuk melakukan restartAndroid Studio yang sedang berjalan. 

Klik Restart → Klik OK dan jika ada pilihan untuk restart Android Studio maka pilih restart. Biarkan Android Studio untuk restart agar plugin-nya dapat kita gunakan setelahnya. Catatan : Jika dialog search tidak berhasil mencari plugin, kosongkan kata pencarian dan masukkan kembali kata pencarian "Android Parcelable". Ini bisa terjadi karena ada error di dalam dialog Plugins.

5. Selanjutnya, setelah plugin Parcelable generator terinstal saatnya kita implementasikan pada kelas Person. Dengan cara :

Klik kanan pilih menu Generate atau bisa Alt+Inser pada workspace (pastikan anda berada pada tab kelas Person). 

6. Pilih Parcelable.


7. Pada dialog box yang tampil, pilih semua variable yang ada lalu klik OK. Sekarang Anda bisa menemukan beragam metode parcelable untuk kelas Person. Sekarang kelas Person sudah sah menjadi kelas parcelable dan dapat dikirimkan ke activity lain melalui intent.

8. Sekarang waktunya kita implementasikan pada intent. Namun sebelumnya tambahkan satu tombol lagi pada activity_main.xml sebagai berikut : 

Sehingga activity_main.xml kita menjadi sebagai berikut :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:orientation="vertical"
tools:context="com.touvan.appbelajarintent.MainActivity">

<Button
android:id="@+id/btn_move_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Berpindah Activity"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

<Button
android:id="@+id/btn_move_activity_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Berpindah Activity Dengan Data"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

<Button
android:id="@+id/btn_move_activity_object"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Berpindah Activity Dengan Object"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

</LinearLayout>
9. Setelah selesai dengan layout xml, sekarang kita tambahkan (pada bagian yang ditebalkan) juga di kelas MainActivity.java sehingga menjadi sebagai berikut : 
package com.touvan.appbelajarintent;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btnMoveActivity;
private Button btnMoveWithDataActivity;
private Button btnMoveWithObjectActivity;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
btnMoveActivity.setOnClickListener(this);
btnMoveWithDataActivity = (Button)findViewById(R.id.btn_move_activity_data);
btnMoveWithDataActivity.setOnClickListener(this);
btnMoveWithObjectActivity = (Button)findViewById(R.id.btn_move_activity_object);
btnMoveWithObjectActivity.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_move_activity:
Intent moveIntent = new Intent(MainActivity.this,MoveActivity.class);
startActivity(moveIntent);
break;

case R.id.btn_move_activity_data:
Intent moveWithDataIntent = new Intent(MainActivity.this,MoveWithDataActivity.class);
moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_NAME, "Touvan Rafli Wiandri");
moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_AGE,20);
startActivity(moveWithDataIntent);
break;

case R.id.btn_move_activity_object:
break;
}
}
}
10. Buat Activity baru dengan nama MoveWithObjectActivity lalu pada activity_move_with_object.xml tambahkan satu buah TextView untuk menampilkan data yang dikirimkan. 
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
tools:context="com.touvan.appbelajarintent.MoveWithObjectActivity">

<TextView
android:id="@+id/tv_object_received"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Object Received"/>

</RelativeLayout>
11. Sekarang, pada MoveWithObjectActivity.java tambahkan kodenya sehingga menjadi sebagai berikut :
package com.touvan.appbelajarintent;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;

public class MoveWithObjectActivity extends AppCompatActivity {
public static String EXTRA_PERSON = "extra_person";
private TextView tvObject;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_move_with_object);
tvObject = (TextView)findViewById(R.id.tv_object_received);
Person mPerson = getIntent().getParcelableExtra(EXTRA_PERSON);
String text = "Name : "+mPerson.getName()+"\n" +
"Email : "+mPerson.getEmail()+"\n" +
"Age : "+mPerson.getAge()+"\n" +
"Location : "+mPerson.getCity();
tvObject.setText(text);
}
}
12. Setelah kita membuat activity tujuan dengan sempurna, sekarang kita hanya butuh menambahkan beberapa baris pada bagian switch… case sebagai berikut :
package com.touvan.appbelajarintent;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btnMoveActivity;
private Button btnMoveWithDataActivity;
private Button btnMoveWithObjectActivity;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
btnMoveActivity.setOnClickListener(this);
btnMoveWithDataActivity = (Button)findViewById(R.id.btn_move_activity_data);
btnMoveWithDataActivity.setOnClickListener(this);
btnMoveWithObjectActivity = (Button)findViewById(R.id.btn_move_activity_object);
btnMoveWithObjectActivity.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_move_activity:
Intent moveIntent = new Intent(MainActivity.this,MoveActivity.class);
startActivity(moveIntent);
break;

case R.id.btn_move_activity_data:
Intent moveWithDataIntent = new Intent(MainActivity.this,MoveWithDataActivity.class);
moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_NAME, "Touvan Rafli Wiandri");
moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_AGE,20);
startActivity(moveWithDataIntent);
break;

case R.id.btn_move_activity_object:
Person mPerson = new Person();
mPerson.setName("Touvan Rafli Wiandri");
mPerson.setAge(20);
mPerson.setEmail("twiandri@gmail.com");
mPerson.setCity("Jakarta");
Intent moveWithObjectIntent = new Intent(MainActivity.this,MoveWithObjectActivity.class);
moveWithObjectIntent.putExtra(MoveWithObjectActivity.EXTRA_PERSON,mPerson);
startActivity(moveWithObjectIntent);
break;
}
}
}
Setelah semua komponen selesai dibuat, saatnya menjalankan kembali aplikasinya. Cobalah menakan tombol 'Pindah Activity dengan Object'. Sekarang Anda sudah berhasil memindahkan satu obyek secara utuh, Selamat!


Topik Intent - Latihan : Intent Implicit 

Anda sudah belajar bagaimana menggunakan intent dengan tipe eksplisit. Sekarang saatnya Anda melanjutkan ke intent dengan tipe implicit. 

1. Buka kembali activity_main.xml tambahkan satu tombol lagi sebagai berikut :
 
Sehingga file activity_main.xml kita sekarang menjadi : 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:orientation="vertical"
tools:context="com.touvan.appbelajarintent.MainActivity">

<Button
android:id="@+id/btn_move_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Berpindah Activity"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

<Button
android:id="@+id/btn_move_activity_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Berpindah Activity Dengan Data"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

<Button
android:id="@+id/btn_move_activity_object"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Berpindah Activity Dengan Object"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

<Button
android:id="@+id/btn_dial_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Dial a Number"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

</LinearLayout>
7. Sekarang, buka kembali MainActivity.java dan lanjutkan dengan melakukan casting tombol Dial Number, set listener dan menambahkan action ketika tombol diklik. 
package com.touvan.appbelajarintent;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btnMoveActivity;
private Button btnMoveWithDataActivity;
private Button btnMoveWithObjectActivity;
private Button btnDialPhone;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
btnMoveActivity.setOnClickListener(this);
btnMoveWithDataActivity = (Button)findViewById(R.id.btn_move_activity_data);
btnMoveWithDataActivity.setOnClickListener(this);
btnMoveWithObjectActivity = (Button)findViewById(R.id.btn_move_activity_object);
btnMoveWithObjectActivity.setOnClickListener(this);
btnDialPhone = (Button)findViewById(R.id.btn_dial_number);
btnDialPhone.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_move_activity:
Intent moveIntent = new Intent(MainActivity.this,MoveActivity.class);
startActivity(moveIntent);
break;

case R.id.btn_move_activity_data:
Intent moveWithDataIntent = new Intent(MainActivity.this,MoveWithDataActivity.class);
moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_NAME, "Touvan Rafli Wiandri");
moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_AGE,20);
startActivity(moveWithDataIntent);
break;

case R.id.btn_move_activity_object:
Person mPerson = new Person();
mPerson.setName("Touvan Rafli Wiandri");
mPerson.setAge(20);
mPerson.setEmail("twiandri@gmail.com");
mPerson.setCity("Jakarta");
Intent moveWithObjectIntent = new Intent(MainActivity.this,MoveWithObjectActivity.class);
moveWithObjectIntent.putExtra(MoveWithObjectActivity.EXTRA_PERSON,mPerson);
startActivity(moveWithObjectIntent);
break;

case R.id.btn_dial_number:
String phoneNumber = "088212732144";
Intent dialPhoneIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"+phoneNumber));
startActivity(dialPhoneIntent);
break;
}
}
}
Setelah selesai, silakan jalankan lagi aplikasi.dan aplikasi yang digunakan bisa men-dial sebuah nomor telepon melalui aplikasi bawaan dari peranti yang dibuat.


1. Aplikasi kita menjalankan intent untuk ACTION_DIAL melalui startActivity().
2. Sistem Android akan melakukan seleksi terhadap semua aplikasi yang memiliki kemampuan untuk menangani action tersebut. Sistem Android akan menentukan aplikasi mana saja yang bisa memproses action berdasarkan intent filter yang telah ditentukan di berkas AndroidManifest.xml pada masing-masing aplikasi. Sistem Android akan menampilkan opsi aplikasi-aplikasi mana saja yang bisa menangani action tersebut ke pengguna.
Pengguna memilih salah satu opsi aplikasi dan kemudian sistem Android akan merouting ke activity pada aplikasi yang dipilih yang memiliki intent-filter untuk aksi ACTION_DIAL.
3. Aplikasi yang dipilih pun muncul di layar dengan nomor telepon yang sudah diatur. 

Anda sudah mempelajari 3 buah intent secara eksplisit dan 1 buah intent secara implicit. Selamat!

Selanjutnya, kita akan membuat sebuah Intent yang didalamnya akan membawa data dengan ResultActivity.

Pada modul ini, kita akan membedah hubungan activity dan intent dalam menerima nilai balik. Kadang kala, ketika kita menjalankan sebuah activity dari activity lain, kita mengharapkan ada nilai hasil balik dari activity yang dijalankan ketika ia ditutup.

Contohnya kita memiliki activity A yang menjalankan activity B untuk melakukan sebuah proses. Lalu nilai hasil dari proses tersebut dikirimkan kembali ke activity A sebelum activity B ditutup dengan pemanggilan metode finish(). Itulah yang dinamakan sebuah activity menerima nilai hasil balik dari activity yang dia jalankan. Untuk memperjelas, ayo kita lanjutkan lagi proses ngodingnya.

1. Sekarang untuk menerapkan konsep diatas, buat sebuah activity baru dengan nama MoveForResultActivity. Setelah itu, pada activity_move_for_result.xml silakan kondisikan layout kita dengan 1 buah TextView, 1 buah Radio Group, 3 buah Radio Button  dan 2 buah Button sebagai berikut :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:orientation="vertical"
tools:context="com.touvan.appbelajarintent.MoveForResultActivity">

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Pilih angka yang kamu suka"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

<RadioGroup
android:id="@+id/rg_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<RadioButton
android:id="@+id/rb_50"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="50"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

<RadioButton
android:id="@+id/rb_100"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="100"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

<RadioButton
android:id="@+id/rb_150"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="150"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

<RadioButton
android:id="@+id/rb_200"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="200"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

</RadioGroup>

<Button
android:id="@+id/btn_choose"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Pilih"/>

</LinearLayout>
2. Setelah selesai, lanjutkan ke berkas MoveForResultActivity.java dengan menuliskan kode sebagai berikut : 
package com.touvan.appbelajarintent;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioGroup;

public class MoveForResultActivity extends AppCompatActivity implements View.OnClickListener {
private Button btnChoose;
private RadioGroup rgNumber;
public static String EXTRA_SELECTED_VALUE = "extra_selected_value";
public static int RESULT_CODE = 110;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_move_for_result);
btnChoose = (Button)findViewById(R.id.btn_choose);
btnChoose.setOnClickListener(this);
rgNumber = (RadioGroup)findViewById(R.id.rg_number);
}

@Override
public void onClick(View view) {
if (view.getId() == R.id.btn_choose) {
if (rgNumber.getCheckedRadioButtonId() != 0){
int value = 0;
switch (rgNumber.getCheckedRadioButtonId()){
case R.id.rb_50:
value = 50;
break;
case R.id.rb_100:
value = 100;
break;
case R.id.rb_150:
value = 150;
break;
case R.id.rb_200:
value = 200;
break;
}
Intent resultIntent = new Intent();
resultIntent.putExtra(EXTRA_SELECTED_VALUE,value);
setResult(RESULT_CODE,resultIntent);
finish();
}
}
}
}
3. Pada activity_main.xml tambahkan lagi satu Button dan satu TextView yang akan kita gunakan untuk menjalankan MoveForResultActivity sebagai berikut:  

Sehingga layout activity_main.xml yang kita punya menjadi seperti ini : 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:orientation="vertical"
tools:context="com.touvan.appbelajarintent.MainActivity">

<Button
android:id="@+id/btn_move_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Berpindah Activity"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

<Button
android:id="@+id/btn_move_activity_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Berpindah Activity Dengan Data"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

<Button
android:id="@+id/btn_move_activity_object"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Berpindah Activity Dengan Object"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

<Button
android:id="@+id/btn_dial_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Dial a Number"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

<Button
android:id="@+id/btn_move_for_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Pindah Activity Untuk Result"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>

<TextView
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="24sp"
android:gravity="center"
android:text="Hasil"/>

</LinearLayout>
4. Setelah selesai, kita lanjut garap berkas MainActivity.java. Buka berkasnya dan sesuaikan kodenya sebagai berikut.
package com.touvan.appbelajarintent;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btnMoveActivity;
private Button btnMoveWithDataActivity;
private Button btnMoveWithObjectActivity;
private Button btnDialPhone;
private Button btnMoveForResult;
private TextView tvResult;
private int REQUEST_CODE = 100;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
btnMoveActivity.setOnClickListener(this);
btnMoveWithDataActivity = (Button)findViewById(R.id.btn_move_activity_data);
btnMoveWithDataActivity.setOnClickListener(this);
btnMoveWithObjectActivity = (Button)findViewById(R.id.btn_move_activity_object);
btnMoveWithObjectActivity.setOnClickListener(this);
btnDialPhone = (Button)findViewById(R.id.btn_dial_number);
btnDialPhone.setOnClickListener(this);
btnMoveForResult = (Button)findViewById(R.id.btn_move_for_result);
btnMoveForResult.setOnClickListener(this);
tvResult = (TextView)findViewById(R.id.tv_result);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_move_activity:
Intent moveIntent = new Intent(MainActivity.this,MoveActivity.class);
startActivity(moveIntent);
break;

case R.id.btn_move_activity_data:
Intent moveWithDataIntent = new Intent(MainActivity.this,MoveWithDataActivity.class);
moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_NAME, "Touvan Rafli Wiandri");
moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_AGE,20);
startActivity(moveWithDataIntent);
break;

case R.id.btn_move_activity_object:
Person mPerson = new Person();
mPerson.setName("Touvan Rafli Wiandri");
mPerson.setAge(20);
mPerson.setEmail("twiandri@gmail.com");
mPerson.setCity("Jakarta");
Intent moveWithObjectIntent = new Intent(MainActivity.this,MoveWithObjectActivity.class);
moveWithObjectIntent.putExtra(MoveWithObjectActivity.EXTRA_PERSON,mPerson);
startActivity(moveWithObjectIntent);
break;

case R.id.btn_dial_number:
String phoneNumber = "088212732144";
Intent dialPhoneIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"+phoneNumber));
startActivity(dialPhoneIntent);
break;

case R.id.btn_move_for_result:
Intent moveForResultIntent = new Intent(MainActivity.this,MoveForResultActivity.class);
startActivityForResult(moveForResultIntent,REQUEST_CODE);
break;
}
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE) {
if (resultCode == MoveForResultActivity.RESULT_CODE) {
int selectedValue = data.getIntExtra(MoveForResultActivity.EXTRA_SELECTED_VALUE,0);
tvResult.setText("Hasil : "+selectedValue);
}
}
}
}
5. Setelah selesai, pastikan tidak ada bagian kode yang tertinggal. Jalankan kembali aplikasinya, dan coba Anda pilih tombol ‘Pindah Activity untuk Result’. Pilih angka yang Anda suka dan lihat hasilnya. Di MainActivity.java sudah ada angka yang tadi Anda pilih di obyek textiew tvResult



Sekian percobaan yang saya buat pada pertemuan 5... Terimakasih bagi yang telah mampir dan menyimaknya hehe...😁😁

Comments

Popular posts from this blog

Konfigurasi 1 Server, 1 Router, 2 SW, 4 Client

TUGAS 1 Saya akan membuat konfigurasi pada Cisco Packet Tracer yaitu dengan mengandalkan 1 Server, 2 Switch, 1 Router, serta 4 Client Pertama Kita buat skema jaringannya terlebih dahulu kemudian kita pikirkan dulu konfigurasinya seperti apa dan bagaimana. Nah kalo skemanya sudah kita buat selanjutnya kita mulai konfigurasi “Biar Gak Kelamaan Mikir hehe". Konfigurasi Server terlebih dahulu Disni kita buat IP Servernya yaitu menggunakan IP Static. Kemudian kita ke Services , aktifkan terlebih dahulu (on) pada DHCPnya seperti itu konfigurasi yang saya buat, disitu saya menggunakan default Gateway tapi jika tidak mau ribet cukup masukkan saja DNS Servernya atau IP server yang sudah di buat sebelumnya. Masih di Services , selanjutnya setup DNSnya, saya menggunakan Name Server nya van.com atau anda bisa buat dengan nama yang anda inginkan, kemudian pada Address-nya saya menggunakan IP Servernya. Pada halaman HTTP anda bisa edit

Tutorial Pembuatan PCB Layout Flip Flop Dengan Diptrace

Flip Flop. Flip-flop adalah rangkaian digital yang digunakan untuk menyimpan satu bit secara semi permanen sampai ada suatu perintah untuk menghapus atau mengganti isi dari bit yang disimpan. Prinsip dasar dari flip-flop adalah suatu komponen elektronika dasar seperti transistor, resistor dan dioda yang di rangkai menjadi suatu gerbang logika yang dapat bekerja secara sekuensial. Berikut ini adalah bagaimana membuat rangkaian PCB Layout-nya : 1. Buka software Diptrace terlebih dahulu (pilih PCB Layout). Tampilan awal saat menjalankan Diptrace. 2. Maka tampilan awalnya akan seperti ini. Tampilan awal PCB Layout. 3. Pilih komponen yang akan dibuat untuk rangkaian flip flop. Komponen rangkaian flip flop. 4. Setelah semua komponen dipilih maka selanjutnya kita hubungkan masing-masing komponen dengan (route manual). Komponen rangkaian flip flop yang sudah dihubungkan. 5. Jika tahap ke-4 sudah selesai selanjutnya kita buat backgroundnya

Sistem Keamanan Jaringan Dan Keamanan Informasi

Sistem Keamanan Jaringan Keamanan jaringan adalah suatu cara atau suatu system yang digunakan untuk memberikan proteksi atau perlindungan pada suatu jaringan agar terhindar dari berbagai ancaman luar yang mampu merusak jaringan. Tujuan membuat keamanan jaringan adalah untuk mengantisipasi resiko jaringan berupa bentuk ancaman fisik maupun logic baik langsung ataupun tidak langsung yang dapat mengganggu aktivitas yang sedang berlangsung dalam jaringan. Satu hal yang perlu diingat bahwa tidak ada jaringan yang anti sadap atau tidak ada jaringan yang benar-benar aman. karna sifat jaringan adalah melakukan komuikasi, dan setiap komunikasi dapat jatuh ke tangan orang lain dan di salah gunakan. Oleh sebab itu keamanaan jaringan sangatlah dibutuhkan. Yang harus dilakukan ialah mengenal beberapa ancaman keamanan jaringan. Serangan terhadap keamanan sistem informasi (security attack) akhir-akhir ini seringkali terjadi kejahatan komputer/cyber crime pada dunia maya seringkali di lak