How to Pass Video Using Intent Between Activities in Android?

23 Dec, 2021
In android, An Intent provides a facility for performing late runtime binding between the code in different applications. Its most significant use is in the launching of activities, where it can be thought of as the glue between activities. It is basically a passive data structure holding an abstract description of an action to be performed.
In this article, we will learn that how we can pass Video using Intent between two activities and then play that video in the second activity. Here is a sample video of what we are going to build in this application. Note that we are going to implement this application using Java language.
Step 1: Create a New Project
Open a new project.
We will be working on Empty Activity with language as Java. Leave all other options unchanged.
You can change the name of the project at your convenience.
There will be two default files named activity_main.xml and MainActivity.java.
If you don’t know how to create a new project in Android Studio then you can refer to How to Create/Start a New Project in Android Studio? 
Step 2: Adding storage permission
Follow the path app > manifests > AndroidManifest.xml and paste the following piece of code in it.
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Step 3: Working on XML files
Navigate to the app > res > layout > activity_main.xml and add the below code to that file. Below is the code for the activity_main.xml file.
XML
<?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">     <Button       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:id="@+id/bt_select"       android:text="Select Video"       android:layout_centerInParent="true"       />  </RelativeLayout>
Follow the path app > right click > new > activity > Empty Activity > name it as “MainActvity2”. Navigate to the app > res > layout > activity_main2.xml and add the below code to that file. Below is the code for the activity_main2.xml file.
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=".MainActivity2">      <RelativeLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:clipToPadding="false"        android:fitsSystemWindows="true">          <VideoView            android:layout_width="match_parent"            android:layout_height="match_parent"            android:id="@+id/video_view"/>      </RelativeLayout>  </androidx.constraintlayout.widget.ConstraintLayout>
Step 4: Working on java files
Go to the MainActivity.java file and refer to the following code. Below is the code for the MainActivity.java file. Comments are added inside the code to understand the code in more detail.
Java
package com.example.videointent;  import androidx.annotation.NonNull;import androidx.annotation.Nullable;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat;import androidx.core.content.ContextCompat;  import android.Manifest;import android.content.Intent;import android.content.pm.PackageManager;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;  public class MainActivity extends AppCompatActivity {      // Initialize variables    Button btSelect;        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);          // Assign variable        btSelect=findViewById(R.id.bt_select);          btSelect.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                // Check condition                if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE)                != PackageManager.PERMISSION_GRANTED)                {                    // When permission is not granted                    // Request permission                    ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}                    ,1);                }                else                {                    // When permission is granted                    // Create method                    selectVideo();                }            }        });      }      private void selectVideo() {        // Initialize intent        Intent intent=new Intent(Intent.ACTION_PICK);        // set type        intent.setType("video/*");        // start activity result        startActivityForResult(Intent.createChooser(intent,"Select Video"),100);    }      @Override    public void onRequestPermissionsResult(int requestCode,  String[] permissions,  int[] grantResults) {        super.onRequestPermissionsResult(requestCode, permissions, grantResults);        // Check condition        if(requestCode==1 && grantResults.length > 0 && grantResults[0]        == PackageManager.PERMISSION_GRANTED)        {            // When permission is granted            // Call method            selectVideo();        }        else        {            // When permission is denied            // Display toast            Toast.makeText(getApplicationContext()            ,"Permission denied",Toast.LENGTH_SHORT).show();        }    }      @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        // Check condition        if(requestCode==100 && resultCode==RESULT_OK && data!=null)        {            // When result code is okay            // Initialize uri            Uri uri=data.getData();            // Initialize intent            Intent intent=new Intent(this,MainActivity2.class);            // Put extra            intent.putExtra("uri",uri.toString());            // Start activity            startActivity(intent);        }    }}
Go to the MainActivity2.java file and refer to the following code. Below is the code for the MainActivity2.java file. Comments are added inside the code to understand the code in more detail.
Java
package com.example.videointent;  import androidx.appcompat.app.AppCompatActivity;  import android.net.Uri;import android.os.Bundle;import android.widget.VideoView;  public class MainActivity2 extends AppCompatActivity {      // Initialize variables    VideoView videoView;      @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main2);          // Assign variables        videoView=findViewById(R.id.video_view);        // Get data from main activity        Bundle bundle=getIntent().getExtras();        // Check condition        if(bundle!=null)        {            // When bundle not equal to null            // Initialize uri            Uri uri=Uri.parse(bundle.getString("uri"));            // Set video uri            videoView.setVideoURI(uri);            // Start video            videoView.start();        }      }}
Here is the final output of our application.
Output:
Android
Java
Java
Android
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to Add Views Dynamically and Store Data in Arraylist in Android?
Android SDK and it's Components
How to Communicate Between Fragments in Android?
Flutter - Custom Bottom Navigation Bar
Retrofit with Kotlin Coroutine in Android
Arrays in Java
Split() String method in Java with examples
Arrays.sort() in Java with examples
Object Oriented Programming (OOPs) Concept in Java
Reverse a string in Java