Introduction
Intent is used to call an internal or external component from an activity to another activity of another app.
Types of intent
- Explicit Intent
- Implicit Intent
Now let's understand them one by one.
Explicit Intent
Explicit Intent is used to call by name. It is simply an app or activity that calls another activity from that activity and because we know the name we can call it by name.
Steps of Explicit Intent
- Initialization of Button on java file
- set Id(R.id.ID_NAME), & onClicklistener on java file
- Onclick listener action on java file
- Intent Initialization
- Start Activity by passing initialized object on Intent
Example of Explicit Intent
Here we create an app that will open another activity on the same app and we will move to the next window of the app by this. We will create two activities under this app and code the same in both files except the button id we assign.
Below we have defined the steps that I have added to the file. You can refer full code snippet at the end of the article
Step 1
On java file under on Main class
Button button;
Step 2
On java file under onCreate
button = findViewById(R.id.button);
button.setOnClickListener(this);
Step 3,4 & 5
On java file under onClick(View view)
@Override
public void onClick(View view) {
Intent call1 = new Intent(this,MainActivity.class);
startActivity(call1);
}
Full Code Snippet
activityMain.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is activity 1"
android:textSize="34sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.377"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.255" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.447"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
app:layout_constraintVertical_bias="0.196" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package com.example.explicit_intent;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
public void onClick(View view) {
Intent call1 = new Intent(this,MainActivity2.class);
startActivity(call1);
}
}
Output
Implicit Intent
It is also called as call android component (otherapp/activity) without name.
When a component needs to be called which has an unknown name then you can call it using its URI address and OS will generate an intent to call this component internally. This intent is known as implicit Intent. In the below diagram we have an Activity A where we are calling an implicit intent by starting the activity by calling URI of the application This will start the internal activity of intent and intent will go to OS for the access to the App or component then if OS check the permission is given to the app is true then it proceeds further and again on the other or acessing app it will have an intent which we call onCreate method and starts the Activity B.
Steps of Implicit Intent
- Initialization of Button on java file
- set Id(R.id.ID_NAME), & onClicklistener on java file
- Onclick listener action on java file
- Under onClick listener perform app permission and Intent initialization
- Start Activity by passing initialized object on Intent
Example of Implicit Intent
Here we create a calling app where it will open the call app and call the person whom we will define
Below we have defined the steps that I have added to the file. You can refer full code snippet at the end of the article
Step 1
On java file under on Main class
Button button;
Step 2
On java file under onCreate
button = findViewById(R.id.button);
button.setOnClickListener(this);
Step 3,4 & 5
On java file under onClick(View view)
@Override
public void onClick(View view) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != getPackageManager().PERMISSION_GRANTED)
{
String[] permissions = new String[1];
permissions[0] = Manifest.permission.CALL_PHONE;
requestPermissions(permissions,111);
}
else {
Intent calling = new Intent(Intent.ACTION_CALL,Uri.parse("tel:8076363682"));
startActivity(calling);
}
}
Full Code Snippet
activityMain.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="210dp"
android:text="call to ravi"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView2"
app:layout_constraintVertical_bias="0.692" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="252dp"
android:layout_height="294dp"
android:layout_marginTop="205dp"
android:layout_marginBottom="73dp"
app:layout_constraintBottom_toTopOf="@+id/button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.496"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@android:drawable/ic_menu_call" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package com.example.callingapp;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != getPackageManager().PERMISSION_GRANTED)
{
String[] permissions = new String[1];
permissions[0] = Manifest.permission.CALL_PHONE;
requestPermissions(permissions,111);
}
else {
Intent calling = new Intent(Intent.ACTION_CALL,Uri.parse("tel:8076363682"));
startActivity(calling);
}
}
}
Output
Conclusion
Here we have discussed what is intent why it is used and what are the types of intent. Examples of implicit and explicit intent are also covered.