0

I found this native android code for what I am trying to achieve

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(newVideoPath), "video/mp4");
startActivity(intent);

(Android intent for playing video?)

But I can't figure out how to use apply it in react native with the Linking.sendIntent api, or if that api is even capable of doing it.

I also tried this module, but it failed to build the project with the error method does not override or implement a method from a supertype

I don't want to write a native module for this.

kess
  • 683
  • 4
  • 16

1 Answers1

0

Turns out you can't send data with an intent with the built in sendIntent api, however there's a handy library that's capable of doing that (react-native-send-intent).

So now I am able to achieve what I wanted like so:

import { Linking, Platform } from "react-native";
import SendIntentAndroid from "react-native-send-intent";

export function playVideo(url){
    var fn = Platform.select({
        android(){
            SendIntentAndroid.openAppWithData(
                /* "org.videolan.vlc" */null,
                "https://www.w3schools.com/html/mov_bbb.mp4",
                "video/*"
            ).then(wasOpened => {});
        },
        default(){
            Linking.openURL(url).catch(err => {});
        }
    });
    fn();
    
}

Despite the library not offering a function for launching the default app for a url, you can achieve it by passing in null as the packagename, since the function it uses under the hood Intent.setPackage(String packageName), accepts null as a value.

kess
  • 683
  • 4
  • 16