PENGENALAN SEKALIGUS TUTORIAL PENGGUNAAN "EXPLICIT INTENT" Dan "IMPLICIT INTENT" ANDROID STUDIO YANG MUDAH DIPAHAMI!!

 

Assalamuala'ikum,....

    HALLO sahabat blogger 👋

    Lama ya tidak jumpa, eits masih bersama saya di blog NR Informatika pembelajaran Android Studio. Belajar membuat aplikasi Android sebenarnya tidak sesulit yang dibayangkan, tapi bagi PC/Laptop yang mempunyai Ram dibawah 4GB itu sulit 😢 saya saran kan  upgrade RAM atau minimalnya RAM 4GB. Karena sebelum memulai membuat aplikasi Android, pertama harus mempunyai alat tempur yang wajib digunakan yaitu Android Studio

Tenang saja seorang pemula pun bisa membuat aplikasi Android dengan baik. Syaratnya harus mengikuti tutorial pembuatan yang tepat dan latihan terus-menerus.

Pada artikel postingan ini, saya akan membagikan pengetahuan pengenalan "EXPLICIT INTENT" Dan "IMPLICIT INTENT" pada Android Studio. Pada sebuah aplikasi pastinya akan ada pemanggilan atau ngelink dari satu form ke from lainnya, atau ngelink ke aplikasi lainnya. Nah pada artikel ini akan ada Tutorial yang akan mempraktekkan tidak hanya transfer data antar Activity dalam satu aplikasi, tapi juga interaksi antar aplikasi. 

Pembahasan kita Explicit Intent dan Implicit Intent, sebelum ke tutorial nya kita bahas terlebih dahulu apa itu "INTENT" , "EXPLICIT INTENT" Dan "IMPLICIT INTENT" ?????

A. INTENT 

    Intent merupakan sebuah mekanisme yang digunakan untuk melakukan sebuah aksi dari komponen aplikasi. Untuk membuat aplikasi Android mungkin membutuhkan lebih dari satu activity, pengolahan data atau menjalankan tugas tidak memungkinkan dilakukan pada User Interface thread. Karena, jika tugas ini membutuhkan waktu yang lama aplikasi akan mengalami force close. Aplikasi Android juga menjalankan tugas bedasarkan event yang diterima. Hal-hal ini dapat dilakukan menggunakan konsep Intent

    Dengan bantuan Intent, komponen Android bisa meminta fungsional dari komponen Android lain. Intent juga membantu mengkomunikasikan bagian dari sebuah aplikasi, perpindahan dari satu layar ke layar lain dimungkinkan dengan Intent. Untuk melalukan sebuah aksi pada sebuah Intent, ada 3 cara yang dapat dilakukan :

1) Menjalankan sebuah activity lain baik dengan data ataupun tanpa data.

2) Membuat sebuah service untuk menjalankan pekerjaan tertentu pada sebuah background/ non main thread.

3) Mengirimkan sebuah boardcast

    Penjelasan dari web developer.android.com , Intent merupakan objek yang menyediakan waktu proses yang mengikat komponen-komponen terpisah. Intent biasanya digunakan untuk berpindah ke activity lain pada aplikasi Android. Agak rumit dipahami memang,, nah mudahnya Intent adalah cara untuk memberikan action pada komponen dalam satu aplikasi yang sama maupun aplikasi lain jika pada web kita mengenalnya dengan istilah Hyperlink.

Terdapat 2 (dua) model Intent dalam pemrograman Android yaitu :

1. Explicit Intent berfungsi untuk mengaktifkan komponen-komponen dalam satu aplikasi yang sama. Contoh : Berpindah Activity.

2. Implicit Intent berfungsi untuk memanggil fungsi Activity yang sudah ada di fungsi internal Android seperti Dial Number, Open Browser dan lain sebagainya.

Fungsi Intent :

⇒ Untuk berpindah halaman dari satu Activity ke Activity lain.

⇒ Untuk transfer dari satu Activity ke Activity lain.

⇒ Untuk memanggil Activity pada internal android seperti melakukan Dial Number, Open Email, dan lainnya.

B. EXPLICIT INTENT

    Explicit Intent digunakan untuk memanggil Activity lain yang masih dalam satu project ataupun berbeda. Pemanggilan Intent secara Explicit dengan menentukan nama Activity  tujuan. Intent membutuhkan 2 parameter yaitu Context (dapat didapatkan dari Activity atau Application) dan nama NamaActivity.class. Berikut contoh dari syntax nya :

Intent intent = new Intent(this, NextActivity.class);

startActivity(intent);


Tutorial membuat Aplikasi dengan menggunakan fungsi Explicit Intent :

1. Buka Android Studio IDE, kemudian buat project baru "Create New Project"

2. Pilih "Empty Activity" → "Next".

3. Configure Your Project

Keterangan :

NameIntentEksplisit atau bisa disesuaikan dengan keinginan anda

Package name → bisa default saja atau bisa juga diubah, disini saya menggunakan url blog saya lalu diikuti nama project IntentEksplisit 

Save location → sesuaikan tempan penyimpanan project anda, kalau saya disimpan di E:\DOKUMEN STIKOM\SEMESTER 6\PAB\Modul8\IntentEksplisit

Language Java (karena pada artikel tutorial ini menggunakan pemrograman bahasa Java

Mimimum SDK  API 14 →  Finish

4. Maka akan muncul tampilan IDE Android Studio.

5. Setelah itu kita buka dan ubah file strings.xml yang terdapat pada folder res/values. Ketikan script seperti dibawah :


6. Kemudian kita membuat sebuah file dimens.xml di dalam folder res/values, dengan langkah berikut :

→ Pertama Klik kanan pada folder "value" → pilih "New" → pilih "Values Resource File"

→ Kedua akan muncul tampilan seperti ini, lalu masukan file name "dimens" dan pastikan sesuai dengan gambar dibawah ini, selanjutnya pilih "OK".


7.  Setelah membuat file dimens.xml, maka ubahlah script nya menjadi seperti berikut:

8. Selanjutnya itu kita ke activity_main.xml, namun kita ubah terlebih dahulu Layout nya menjadi RelativeLayout, dengan langkah berikut :

→ Pertama kita pergi ke "Component Three"


→ Kedua klik kanan pada "ConstraintLayout" lalu pilih "covert view"

→ Ketiga, akan muncul pilihan beberapa layout, karena kita akan menggunakan Relative Layout maka pilih "RelativeLayout"→  pilih "Apply"


Setelah diubah layout nya, maka buka code file activity_main.xml dan ubahlah scriptnya seperti di bawah ini :
<?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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">

<TextView
android:id="@+id/text_header_reply"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text_header_reply"
android:visibility="invisible"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold"/>

<TextView
android:id="@+id/text_message_reply"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/text_header_reply"
android:visibility="invisible"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginStart="@dimen/activity_horizontal_margin"
android:textAppearance="?android:attr/textAppearanceMedium"/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_main"
android:id="@+id/button_main"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:onClick="launchSecondActivity"/>

<EditText
android:id="@+id/editText_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/button_main"
android:layout_toStartOf="@+id/button_main"
android:hint="@string/editText_main"/>

</RelativeLayout>

Note : Pada file activity_main.xml terdapat pemanggilan dari file resource contohnya android:text="@string/text_header_reply" dari file res/value/strings.xml , android:layout_marginBottom="@dimen/activity_vertical_margin" dari file res/value/dimens.xml, dan lain sebagainya.

Dari script diatas tampilan Design + Blueprint akan jadi seperti ini :


9. Kemudian kita buat fungsional pada tombol button agar dapat memproses data, buka dan ubahlah script pada  file MainActivity.java seperti dibawah ini :

package ryeyen08.blogspot.com.intenteksplisitt;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
private static final String LOG_TAG = MainActivity.class.getSimpleName();
public static final String EXTRA_MESSAGE = "com.example.intenteksolisit.extra.MESSAGE";
public static final int TEXT_REQUEST= 1;

private EditText mMessageEditText;
private TextView mReplyHeadTextView;
private TextView mReplyTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMessageEditText = (EditText) findViewById(R.id.editText_main);
mReplyHeadTextView = (TextView) findViewById(R.id.text_header_reply);
mReplyTextView = (TextView) findViewById(R.id.text_message_reply);
}
public void launchSecondActivity(View view) {
Log.d(LOG_TAG, "Button clicked!");
Intent intent = new Intent(this, SecondActivity2.class);
String message = mMessageEditText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivityForResult(intent, TEXT_REQUEST);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == TEXT_REQUEST){
if (resultCode == RESULT_OK){
String reply = data.getStringExtra(SecondActivity2.EXTRA_REPLY);
mReplyHeadTextView.setVisibility(View.VISIBLE);
mReplyTextView.setText(reply);
mReplyTextView.setVisibility(View.VISIBLE);
}
}
}
}

10. Nah karena kita membuat aplikasi menggunakan fungsi Explicit Intent maka kita harus mempunyai minimalnya dua activity untuk disambungkan ke activity lainnya. Kita akan buat file SecondActivity, ikuti langkah diberikut :
→ Pertama-tama, kita pergi ke folde res/values → Klik Kanan "value" → "New" → "Activity" → "Empty Activity" seperti gambar dibawah :


→ Kedua, akan muncul tampilan seperti gambar di bawah ini, kita ubah Activity Name : SecondActivity2 dan sesuaikan seperti gambar.


→ Tadaaa kita sudah mendapatkan sekaligus 2 file, yang pertama SecondActivity2.java dan activity_second2.xml.


11. Buka dan ubah script file activity_second2.xml seperti dibawah : Note:Ubahlah terlebih dahulu Layout ke RelativeLayout caranya seperti di langkah ke 8 ya ☝
<?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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".SecondActivity2">

<TextView
android:id="@+id/text_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text_header"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold"/>

<TextView
android:id="@+id/text_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/text_header"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginStart="@dimen/activity_horizontal_margin"
android:textAppearance="?android:attr/textAppearanceMedium"/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_second"
android:id="@+id/button_second"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:onClick="returnReply"/>

<EditText
android:id="@+id/editText_second"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/button_second"
android:layout_toStartOf="@+id/button_second"
android:hint="@string/editText_second"/>
</RelativeLayout>

Dari script diatas tampilan Design + Blueprint akan jadi seperti ini, tidak banyak berubah tampilannya hanya berbeda pemanggilan @string saja :


12. Selanjutnya buka SecondActivity2.java dan ubah lah script nya seperti dibawah ini:

package ryeyen08.blogspot.com.intenteksplisitt;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class SecondActivity2 extends AppCompatActivity {
public static final String EXTRA_REPLY = "com.example.intenteksolisit.extra.REPLY";
private EditText mReply;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second2);
mReply = (EditText) findViewById(R.id.editText_second);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView textView = (TextView) findViewById(R.id.text_message);
if (textView != null){
textView.setText(message);
}
}
public void returnReply(View view){
String reply = mReply.getText().toString();
Intent replyIntent = new Intent();
replyIntent.putExtra(EXTRA_REPLY, reply);
setResult(RESULT_OK, replyIntent);
finish();
}
}

13. Kita perlu mendaftarkan komponen Intent Filter di AndroidManifest.xml, buka file AndroidManifest.xml dan sesuaikan seperti dibawah :


14. Yang teakhir coba jalankan menggunakan emulator yang tersedia di Android Studio, pilih "Run App", maka akan tampil seperti dibawah :

Hasil  App ExplisitIntent


C. IMPLICIT INTENT

    Intent Implicit adalah Intent yang tidak memiliki target dan melempar tugas ke aplikasi lainnya. Intent jenis ini mengirim pesan atau permintaan, lalu System Androis akan mencari aplikasi yang dapat mengabulkan permintaan Intent. Wahh keren kan hihi... Dan aplikasi yang siap akan mengangkap tugas yang diberikan dan langsung menjalankan tugas.

Berikut source code dari Intent Implicit yang dapat memanggil komponen browser untuk URL tertentu :
Intent inten = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.ryeyen0812.blogspot.com"));
startActivity(intent);

    Terkadang pada Aplikasi yang dibuat, membutuhkan Activity bawaan yang telah disediakan oleh Android. Pemanggilan Intent ini dilakukan secara Implicit. Pada umumnya melakukan ini cukup dengan mendefinisikan aksi tertentu(dapat menggunakan konstanta pada Intent uyang umumnya menggunkan prefiks ACTION). Aplikasi yang umum digunakan antara lain:
⇉ Call atau Call Log
⇉ Dialpad
⇉ Contact
⇉ Browser
⇉ Gallery
⇉ Camera

Sebagai contohnya berikut kode untuk pemanggilan Gallery yang berisi gambar :
Intent intenn = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

Tutorial membuat Aplikasi dengan menggunakan fungsi Implicit Intent :

1. Buka Android Studio IDE, kemudian buat project baru "Create New Project"


2. Pilih "Empty Activity" → "Next".


3. Configure Your Project


Keterangan :

Name → ImplicitIntent atau bisa disesuaikan dengan keinginan anda

Package name → bisa default saja atau bisa juga diubah, disini saya menggunakan url blog saya lalu diikuti nama project ImplicitIntent

Save location → sesuaikan tempan penyimpanan project anda, kalau saya disimpan di E:\DOKUMEN STIKOM\SEMESTER 6\PAB\Modul8\ImplicitIntent.

Language → Java (karena pada artikel tutorial ini menggunakan pemrograman bahasa Java

Mimimum SDK  API 14 →  Finish

4. Maka akan muncul tampilan IDE Android Studio.

5. Setelah itu kita buka dan ubah file strings.xml yang terdapat pada folder res>values. Ketikan script seperti dibawah :


6. Kemudian kita membuat sebuah file dimens.xml di dalam folder res/values, dengan langkah berikut :

→ Pertama Klik kanan pada folder "value" → pilih "New" → pilih "Values Resource File"


→ Kedua akan muncul tampilan seperti ini, lalu masukan file name "dimens" dan pastikan sesuai dengan gambar dibawah ini, selanjutnya pilih "OK".

7.  Setelah membuat file dimens.xml, maka ubahlah script nya menjadi seperti berikut:

8. Selanjutnya itu kita ke activity_main.xml, namun kita ubah terlebih dahulu Layout nya menjadi LinearLayout, dengan langkah berikut :

→ Pertama kita pergi ke "Component Three"

→ Kedua klik kanan pada "ConstraintLayout" lalu pilih "covert view"

→ Ketiga, akan muncul pilihan beberapa layout, karena kita akan menggunakan Linear Layout maka pilih "LinearLayout"→  pilih "Apply"

→ Keempat, jika yang terlpilih LinearLayout(horizontal), maka kita ubah menjadi vertical dengan klik kanan → LinearLayout Convert orientationto vertical.

Setelah diubah layout nya, maka buka code file activity_main.xml dan ubahlah scriptnya seperti di bawah 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity">

<EditText
android:id="@+id/website_edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/edittext_uri"/>
<Button
android:id="@+id/open_website_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:onClick="openWebsite"
android:text="@string/button_uri"/>
<EditText
android:id="@+id/location_edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/edittext_loc"/>
<Button
android:id="@+id/open_location_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="14dp"
android:onClick="openLocation"
android:text="@string/button_loc"/>
<EditText
android:id="@+id/share_edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/edittext_share"/>
<Button
android:id="@+id/share_text_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:onClick="sharetext"
android:text="@string/button_share"/>

</LinearLayout>

Dari script diatas tampilan Design + Blueprint akan jadi seperti ini :


9. Kemudian untuk mendaftarkan komponen Intent filter, buka dan bah script AndroidManifest.xml seperti pada dibawah ini :


10. Lalu kita buat fungsional pada tombol button agar dapat memproses data, buka dan ubah script MainActivity.java seperti dibawah 
package ryeyen08.blogspot.com.implicitintents;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ShareCompat;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
private EditText mWebsiteEditText;
private EditText mLocationEditText;
private EditText mShareTextEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mWebsiteEditText = (EditText) findViewById(R.id.website_edittext);
mLocationEditText = (EditText) findViewById(R.id.location_edittext);
mShareTextEditText = (EditText) findViewById(R.id.share_edittext);
}
public void openWebsite(View view){
String url = mWebsiteEditText.getText().toString();
Uri webpage = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
if (intent.resolveActivity(getPackageManager()) != null){
startActivity(intent);
}else{
Log.d("ImplicitIntents", "Can't handle this intent!");
}
}
public void openLocation(View view){
String loc = mLocationEditText.getText().toString();
Uri addressUri = Uri.parse("geo:-6.781310,108.340131" + loc);
Intent intent = new Intent(Intent.ACTION_VIEW, addressUri);
if (intent.resolveActivity(getPackageManager()) != null){
startActivity(intent);
}else {
Log.d("ImplicitIntents", "Can't handle this intent!");
}
}
public void sharetext(View view){
String txt = mShareTextEditText.getText().toString();
String mimeType = "text/plain";
ShareCompat.IntentBuilder
.from(this)
.setType(mimeType)
.setChooserTitle("Share this text with: ")
.setText(txt)
.startChooser();;
}
}
Note: 
- Untuk openWebsite itu link website nya terdapat pada file strings.xml
- Untuk openLocation itu anda tinggal ubah lokasi anda pada "geo: ...."
- Untuk shareText itu text nya terdapat pada file string.xml

11. Teakhir coba jalankan menggunakan emulator yang tersedia pada Android Studio,klik "Run App" maka akan tampil seperti berikut :
Hasil App ImplicitIntent

⇨ Ketika kita tekan tombol OPEN WEBSITE ,maka akan tampil web browser seperti ini:
Hasil klik OPEN WEBSITE

⇨ Ketika kita tekan tombol OPEN LOCATION, maka akan tampil Google Map seperti berikut:
Hasil klik OPEN LOCATION

⇨ Ketika kita tekan tombol SHARE THIS TEXT, maka akan tampil pilihan Apps yang dapat melalukan share dalam system default android seperti berikut :

Hasil klik OPEN SHARE THIS TEXT

    Nahh gimana sahabat blogger sudah bisa? senang bisa berbagi ilmu, jangan lupa untuk kunjungi artikel tutorial laiinya di blog NR Informatika. Jika ada kendala error bisa koment di kolom komentar atau bisa hubungi melalui e-mail saya, kita diskusikan bersama dan belajar bersama.
Jika ada yang salah atau kurang mohon kritikan dan sarannya sahabat blogger.

Terimakasih atas kunjungan nya 😀


0 comments:

Posting Komentar