PENGENALAN EXPLICIT INTENT DAN IMPLICIT INTENT PADA ANDROID STUDIO

 Intent adalah sebuah jembatan yang menghubungkan interaksi antar Activity di aplikasi Android. Intent juga dapat membawa dan mengirimkan data ke Activity lain, bahkan ke aplikasi lain (Gmail, Google Map dsb).

Intinya, Intent merupakan mekanisme untuk melakukan sebuah action dan komunikasi antar komponen aplikasi. Contoh, kamu memiliki sebuah halaman Activity yang terdapat tombol di dalamnya. Lalu kamu tekan tombol tersebut untuk membuka peta, kamera, atau halaman lainnya. Nah, perpindahan inilah yang dinamakan Intent.

Intent terbagi menjadi 2 bagian yaitu Intent Implicit dan Intent Explicit.

  • Intent Implicit: Berfungsi melakukan perpindahan activity (halaman) menuju ke aplikasi internal smartphone kamu. Contohnya ketika kamu hendak membuka sebuah kamera.
  • Intent Explicit: Berfungsi melakukan perpindahan activity (halaman) ke activity (halaman) lainnya. Explicit intent bekerja dengan menggunakan nama kelas yang dituju, misal com.dicoding.activity.DetailActivity. Umumnya intent ini digunakan untuk mengaktifkan komponen pada satu aplikasi.

Berikut adalah pelaksanaan Explicit Intent dan Implicit Intent pada Android Studio : 

A. Intent Explicit 
  • Buka Aplikasi Android Studio. Setelah muncul seperti ini, klik Star a new Android Studio project. 
  • Pilih template yang akan digunakan sesuai dengan kebutuhan, dan next.
  • Setelah itu ubah nama file dengan "IntentEksplisit".
  • Ubahlah script pada activity_main.xml : 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    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:layout_below="@+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: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>

  • Ubahlah MainActivity.java menjadi script dibawah ini : 
package dewiratnawati246.blogspot.com.intenteksplisit;

import android.content.Intent;
import androidx.appcompat.app.AppCompatActivity;
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, activity_second.class);
        String message = mMessageEditText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivityForResult(intent,TEXT_REQUEST);
    }
    public void onActivity(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode,resultCode,data);

        if (requestCode == TEXT_REQUEST){
            if (resultCode == RESULT_OK){
                String reply = data.getStringExtra(activity_second.EXTRA_REPLY);
                mReplyHeadTextView.setVisibility(View.VISIBLE);
                mReplyTextView.setText(reply);

mReplyTextView.setVisibility(View.VISIBLE);
            }
        }
    }
}

  • Buatlah second activity dengan nama Acitivity_second.xml, lalu ketikkan script 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_hotizontal_margin"
    android:paddingRight="@dimen/activity_hotizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".activity_second">

    <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:layout_below="@+id/text_header"
        android:layout_marginLeft="@dimen/activity_hotizontal_margin"
        android:layout_marginStart="@dimen/activity_hotizontal_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="returbReply"/>
    <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>

  • Lalu buka dan ubahlah script pada Secondactivity.java : 

package dewiratnawati246.blogspot.com.intenteksplisit;

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

public class activity_second extends AppCompatActivity {
    public static final String EXTRA_REPLY ="com.example.intenteksplisit.extra.REPLY";
    private EditText mReply;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        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();
        setResult(RESULT_OK, replyIntent);
        finish();
    }
}

  • Lalu buka dan ubah script String.xml : 
<resources>
    <string name="app_name">IntentEksplisit</string>
    <string name="text_header_reply"></string>
    <string name="button_main"></string>
    <string name="editText_main"></string>
    <string name="text_header"></string>
    <string name="button_second"></string>
    <string name="editText_second"></string>
</resources>

  • Buatlah file dimens.xml pada folder res/values dan ketikkan script'nya : 
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="activity_vertical_margin"></dimen>
    <dimen name="activity_hotizontal_margin"></dimen>
</resources>

  • Sesuaikan script AndroidManifes.xml untuk mendaftarkan Intent Filter : 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="dewiratnawati246.blogspot.com.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/AppTheme">
        <activity android:name=".activity_second"></activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

  • Lalu klik Run/dijalankan, maka akan muncul tampilan seperti dibawah ini :



B. Implicit Intent 
  • Buka Aplikasi Android Studio. Setelah muncul seperti ini, klik Star a new Android Studio project. 
  • Pilih template yang akan digunakan sesuai dengan kebutuhan, dan next.
  • Pada langkah ini pengisiannya sama seperti praktikum sebelumnya. Hanya saja Namanya kita ganti “ImplisitIntents”.

  • Buka dan ubahlah script String.xml seperti dibawah ini : 
<resources>
    <string name="app_name">ImplisitIntents</string>
    <string name="edittext_url">http://dewiratnawati246.blogspot.com</string>

<string name="button_url">Open Website</string>
    <string name="edittext_loc">Stikom-Poltek Cirebon.com</string>
    <string name="button_loc">Open Location</string>
    <string name="edittext_share">Belajar Android</string>
    <string name="button_share">Share This Text</string>

</resources>

  • Buka dan ubahlah script Activity_main.xml seperti dibawah 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_margim"
    android:paddingLeft="@dimen/activity_horizontal_margim"
    android:paddingRight="@dimen/activity_horizontal_margim"
    android:paddingTop="@dimen/activity_vertical_margim"
    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/button_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/edittext_loc"/>

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

  • Sesuaikan script AndroidManifes.xml untuk mendaftarkan Intent Filter : 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.implisitintents">

    <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/AppTheme">
        <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="http"

android:host="developer.android.com"/>
            </intent-filter>

        </activity>
    </application>

</manifest>
  • Buatlah file dimens.xml pada folder res/values dan ketikkan script'nya :
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="activity_horizontal_margim">16dp</dimen>
    <dimen name="activity_vertical_margim">16dp</dimen>
</resources>

  • Buka dan ubahlah script MainActivity.java seperti dibawah ini : 
package com.example.implisitintents;

import android.content.Intent;
import android.os.Bundle;
import android.net.Uri;
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 mWwebsiteEditText;
    private EditText mLocationEditText;
    private EditText mShareTextEditText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mWwebsiteEditText = (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 = mWwebsiteEditText.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:0,0?q="+loc);
        Intent intent = new Intent(Intent.ACTION_VIEW,addressUri);
        if (intent.resolveActivity(getPackageManager())!=null) {
            startActivity(intent);
        } else {
            Log.d("ImplicitIntents", "Can't handle this intents!");


}

    }
    public void shareText(View view) {
        String loc = mShareTextEditText.getText().toString();
        String mimeType = "text/plain";
        ShareCompat.IntentBuilder
                .from(this)
                .setType(mimeType)
                .setChooserTitle("Share this text with:")
                .setText("txt")
                .startChooser();
    }
}


  • Lalu Run/jalankan, maka akan muncul tampilan seperti dibawah ini : 
  
 





Semoga Bermanfaat :) 





























Komentar

Postingan populer dari blog ini

PENGENALAN LAYOUTING (LinearLayout, RelativeLayout, TableLayout, AbsoluteLayout) PADA ANDROID STUDIO

PENGENALAN SQLITE PADA ANDROID STUDIO

CRUD Database MySQL dengan PHP Pada Apk Andoroid