Mengenal Apa Itu Explicit Intent dan Implicit Intent pada Android Studio


Hai coders , Di dalam Android, kemampuan mengirim pesan bisa dilakukahn menggunakan fungsi objek Intent.  Dengan bantuan intent, komponen Android bisa meminta fungsional dari komponen  Android lain. Saat kamu membuka aplikasi Instagram di handphone mu dan  menggunakannya untuk mengambil foto, kamu menggunakan intent. Intent juga  membantu mengkomunikasikan bagian dari sebuah aplikasi; perpindahan dari satu  layar (aktifitas) ke layar lain dimungkinkan dengan intent.

Intent adalah cara untuk memberikan Action pada  komponen dalam satu aplikasi yang sama maupun aplikasi lain jika di web kita  mengenalnya dengan isitlah Hyperlink.

Terdapat 2 model Intent dalam pemrograman Android yaitu: 
a) Explicit Intent berfungsi untuk mengaktifkan komponen-komponen dalam satu  aplikasi yang sama. Misalnya seperti : Berpindah Activity.
b) Implicit Intent berfungsi untuk memanggil fungsi activity yang sudah ada di fungsi  internal android seperti Dial Number, Open Browser dan lainnya. 

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 dua parameter, yang pertama adalah Context (dapat  didapatkan dari Activity atau Application) dan berikutnya adalah nama NamaActivity.class. 

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

  1. Pertama jalankan aplikasi IDE Android Studio, caranya :
  • Pilih Start > Android Studio
  • Pilih > Start a new Android Studio Project
  • Pilih > Empty Activity > Next
  • Configure Your Project


  • Name → IntentEksplisit
  • Package Name → Di sini saya menggunakan URL blog saya pribadi
  • Save Location → /home/zall/AndroidStudioProject/IntentExplisit
  • Language → Java
  • Minimum API Level → API 16 → Lalu Klik Finish

2. Maka akan   Tampil   IDE   Android   Studio,   setelah   itu   Buka   dan   ubah   script activity_main.xml menjadi 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"
    tools:context=".MainActivity"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">

    <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="@string/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:id="@+id/button_main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:onClick="launchSecondActivity"
        android:text="@string/button_second" />

    <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>

			

3. Kemudian Edit MainActivity.java seperti ini

package com.naskahkode.intenteksplisit;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
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.intenteksplisit.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, MainActivity2.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(MainActivity2.EXTRA_REPLY);
                mReplyHeadTextView.setVisibility(View.VISIBLE);
                mReplyTextView.setText(reply);
                mReplyTextView.setVisibility(View.VISIBLE);
            }
        }
    }
}

			

4. Buat sebuah Activity baru dengan Nama MainActivity2 dengan cara seperti gambar di bawah ini

5. Selanjutnya Buka dan ubah script activity_main2.xml ,lalu ketikan script nya seperti  dibawah 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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".mainactivity2">
    <TextView
        android:id="@+id/text_header"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/activity_vertical_margin"
        android:text="@string/text_header"
        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:layout_below="@+id/text_header"
        android:layout_marginStart="@dimen/activity_horizontal_margin"
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:text="@string/text_header"
        android:textAppearance="?android:attr/textAppearanceMedium" />

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

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

6. Selanjutnya Buka dan ubah script MainActivity2.java lalu ketikan script nya seperti  dibawah ini

package com.naskahkode.intenteksplisit;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity2 extends AppCompatActivity {
    public static final String EXTRA_REPLY = "com.naskahkode.pabpertemuan8.extra.REPLY";
    private EditText mReply;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        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();
}
}

			

7. Setelah itu Buka dan ubah script String.xml .Di Res -> Values -> String.xml lalu ketikan script nya seperti  dibawah ini

<resources>
    <string name="app_name">Inten Eksplisit</string>
    <string name="button_main">Send</string>
    <string name="activity2_name">Second Activity</string>
    <string name="text_header">Message Received</string>
    <string name="editText_main">Enter Your Message Here</string>
    <string name="button_second">Send</string>
    <string name="editText_second">Enter Your Reply Here</string>
    <string name="text_header_reply">Reply Received</string>
</resources>
	

8. Setelah itu buat file dimens.xml di dalam folder Res -> Values lalu ketikan script nya seperti  dibawah ini

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>
</resources>

9. Sesuaikan script AndroidManifest.xml dengan membuka APP -> Manifest -> AndroidManifest.xml seperti di bawah ini untuk mendaftarkan komponen Intent Filter yang ada

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.naskahkode.intenteksplisit">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.IntentEksplisit">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity2"/>
    </application>

</manifest>

10. Jalankan di emulator Maka akan tampil seperti gambar di bawah ini



Implicit Intent

Intent Implisit adalah Intent yang tidak memiliki target dan melempar tugas ke  aplikasi lainnya. Intent jenis ini mengirim pesan dan permintaan, lalu System Android akan  mencari aplikasi yang dapat mengabulkan permintaan Intent. Aplikasi yang siap akan  menangkap tugas yang diberikan menjalankan tugas.

Gambaran Source code dari intent implisit, Source di di bawah ini merupakan salah komponen yang dapat memanggil komponen dari browser untuk URL tertentu menggunakan intent.  

Intent intent = new Intent
(Intent.ACTION_VIEW,Uri.parse(“naskahkode.com”)); 
startActivity(intent);

  1. Pertama jalankan aplikasi IDE Android Studio, caranya :
  • Pilih Start > Android Studio
  • Pilih > Start a new Android Studio Project
  • Pilih > Empty Activity > Next
  • Configure Your Project


  • Name → ImplicitIntents
  • Package Name → Di sini saya menggunakan URL blog saya pribadi
  • Save Location → /home/zall/AndroidStudioProject/ImplicitIntents
  • Language → Java
  • Minimum API Level → API 16 → Lalu Klik Finish

2. Maka akan Tampil IDE Android Studio, setelah itu Buka dan ubah script string.xml di res -> values -> String.xml menjadi seperti di bawah ini

<resources>
        <string name="app_name">ImplicitIntents</string>
<string name="edittext_url">https://naskahkode.com</string>
<string name="button_url">Open Website</string>
<string name="edittext_loc">Jasa branding dan website design </string>
<string name="button_loc">Open Location</string>
<string name="edittext_share">Bagikan untuk berbagi pengetahuan </string>
<string name="button_share">Share This Text</string> </resources>

3. Setelah itu Buka dan ubah script activity_main.xml menjadi 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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingBottom="@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_url"/>
    <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_url"/>
    <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="24dp"
        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/shre_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>
			

4. Selanjutnya Buka dan ubah script AndroidManifest.xml untuk mendaftarkan  komponen Intent filter menjadi seperti gambar di bawah ini

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.naskahkode.implicitintents">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.ImplicitIntents">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="https"
                    android:host="naskahkode.com"/>
            </intent-filter>
        </activity>
    </application>

</manifest>
			

5. Buat file dimens.xml di dalam folder Res/Values, lalu ketikan scriptnya seperti  di bawah ini

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>
</resources>
			

6. Selanjutnya ubah script MainActivity.java menjadi seperti di bawah ini


package com.naskahkode.implicitintents;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ShareCompat;

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","cant handle this intent!");
}
}
public void openLocation(View view){
String loc = mLocationEditText.getText().toString();
Uri addressUri = Uri.parse("https://maps.app.goo.gl/sYvSMaispzLjFaTSA" );
Intent intent = new Intent(Intent.ACTION_VIEW, addressUri);
if (intent.resolveActivity(getPackageManager()) !=null){
startActivity(intent);
}else {
Log.d("ImplicitIntents","Cant handle this intents!");
}
}
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();

}
}

7. Lalu coba jalankan menggunakan emulator yang tersedia di Android Studio Anda, maka akan tampil seperti gambar di bawah ini





Bagikan:

Post a Comment

Top Ads

Middle Ads 1

Middle Ads 2

Bottom Ads