sak
sak

Reputation: 1298

How to share Videos to any app using Intent?

Issue: What happens is after sharing the video when i launch the app to check the shared video it shows me error of "Unable to import" and "The video is no longer available".

Android Version: Oreo(8.0)

Code: I am trying with the following code to share videos with other apps using intent:

            Intent share = new Intent(Intent.ACTION_SEND);
            share.setType("video/*");

            share.putExtra(Intent.EXTRA_SUBJECT, "abc");
            share.putExtra(Intent.EXTRA_TITLE, "abcd");

            File imageFileToShare = new File(Environment.getExternalStorageDirectory() + "/mygallery/" + "airp.mp4");

            Uri uri = FileProvider.getUriForFile(Main2Activity.this, "abc.dcf.fileprovider", imageFileToShare);

            share.putExtra(Intent.EXTRA_STREAM, uri);

            share.setPackage("com.abc.in");
            startActivity(Intent.createChooser(share, "Message"));

The above code is working fine to share Images but its not working to share videos.

What i have tried: I have tried by sharing various file types like 3gp, mkv, mp4 but nothing is working out and I have also went through various similar questions but no solution is working in case of videos.

Please help me with this issue and also if there is any alternate way to do so?

Upvotes: 2

Views: 3661

Answers (1)

Mbuodile Obiosio
Mbuodile Obiosio

Reputation: 1543

You can add this to your OnCreate

StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());

If that doesn't work for you,

Add Provider to Manifest by doing this

<provider
   android:name="android.support.v4.content.FileProvider"
   android:authorities="${applicationId}.provider"
   android:exported="false"
   android:grantUriPermissions="true">
      <meta-data
         android:name="android.support.FILE_PROVIDER_PATHS"
         android:resource="@xml/provider_paths"/>
 </provider>

Remember to use android:name="androidx.core.content.FileProvider" if you're using androidx

Create a file in xml directory (res/xml) and name provider_paths.xml

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external_files" path="."/>
</paths>

Replace

Uri uri = FileProvider.getUriForFile(Main2Activity.this, "abc.dcf.fileprovider", imageFileToShare);

with this

Uri uri = FileProvider.getUriForFile(Main2Activity.this, BuildConfig.APPLICATION_ID + ".provider",imageFileToShare);

Upvotes: 4

Related Questions