Znalazłem ten natywny kod Android dla tego, co próbuję osiągnąć

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

(Intent Android do odtwarzania wideo?)

Ale nie mogę dowiedzieć się, jak użyć go w reaguje rodzimy z Linking.sendintent API, lub jeśli ten interfejs API jest nawet zdolny do tego.

Próbowałem też Moduł, ale nie udało się zbudować Projekt z błędem method does not override or implement a method from a supertype

Nie chcę dla tego pisać rodzimego modułu.

0
kess 22 listopad 2020, 18:57

1 odpowiedź

Najlepsza odpowiedź

Okazuje się, że nie możesz wysłać danych z zamiarem zbudowanym w Sendintent API, jednak jest poręczna biblioteka, która jest zdolna do robienia tego ( React-Native-Wish-Intent ).

Więc teraz jestem w stanie osiągnąć to, co chciałem:

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();
    
}

Pomimo biblioteki nie oferuje funkcji uruchomienia domyślnej aplikacji dla adresu URL, możesz go osiągnąć, przechodząc w NULL jako opakowanie nazwa, ponieważ funkcja używa pod maską Hood . SetPackage (String Packagename) , akceptuje wartość null jako wartość.

0
kess 24 listopad 2020, 19:28