Skip to main content

How to use intents to launch external activities in Kotlin Android

How to use intents to launch external activities in Kotlin Android.

Intents in Android are used to communicate between components of an application or between different applications. They can be used to perform various actions such as starting an activity, sending data between activities, or opening a specific URL in a web browser.

In this tutorial, we will learn how to use intents to launch external activities in Kotlin Android. We will cover different scenarios and provide code examples along the way.

1. Launching an External Activity

To launch an external activity, you need to create an intent with the action ACTION_VIEW and set the data of the intent to the URI you want to open. Here's an example:

val uri = Uri.parse("https://www.example.com")
val intent = Intent(Intent.ACTION_VIEW, uri)
startActivity(intent)

In the above example, we create an intent with the action ACTION_VIEW and set the data of the intent to the URI "https://www.example.com". Finally, we start the activity using the startActivity method.

2. Launching an External Activity with Specific MIME Type

Sometimes, you may want to launch an external activity that can handle a specific MIME type. To do this, you need to set the MIME type of the intent using the setType method. Here's an example:

val intent = Intent(Intent.ACTION_VIEW)
intent.setType("application/pdf")
startActivity(intent)

In the above example, we create an intent with the action ACTION_VIEW and set the MIME type to "application/pdf". This will launch an external activity that can handle PDF files.

3. Launching an External Activity with Data and MIME Type

You can also launch an external activity with both data and a specific MIME type. Here's an example:

val uri = Uri.parse("file:///path/to/file.pdf")
val intent = Intent(Intent.ACTION_VIEW)
intent.setDataAndType(uri, "application/pdf")
startActivity(intent)

In the above example, we create an intent with the action ACTION_VIEW, set the data to the file URI "file:///path/to/file.pdf", and set the MIME type to "application/pdf". This will launch an external activity that can handle PDF files and open the specified file.

4. Launching an External Activity with Extra Data

You can also pass extra data to the launched activity using intents. Here's an example:

val intent = Intent(Intent.ACTION_VIEW)
intent.putExtra("key", "value")
startActivity(intent)

In the above example, we create an intent with the action ACTION_VIEW and add an extra data "key" with the value "value". The launched activity can then retrieve this extra data using the getStringExtra method.

5. Checking if an External Activity is Available

Before launching an external activity, it is a good practice to check if the activity is available on the device. You can do this by using the resolveActivity method. Here's an example:

val uri = Uri.parse("https://www.example.com")
val intent = Intent(Intent.ACTION_VIEW, uri)
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
} else {
Toast.makeText(this, "No activity found to handle this intent.", Toast.LENGTH_SHORT).show()
}

In the above example, we create an intent with the action ACTION_VIEW and set the data of the intent to the URI "https://www.example.com". We then check if there is an activity available to handle this intent using the resolveActivity method. If an activity is available, we start the activity. Otherwise, we display a toast message indicating that no activity is found.

Conclusion

In this tutorial, we have learned how to use intents to launch external activities in Kotlin Android. We covered different scenarios such as launching an external activity, launching an external activity with a specific MIME type, launching an external activity with data and MIME type, launching an external activity with extra data, and checking if an external activity is available. Intents provide a powerful way to interact with other components and applications in Android, enabling seamless integration and communication between different parts of your app or other apps.