Aplikacja YouTube na Androida Odtwórz wideo Intent


113

Stworzyłem aplikację, w której można pobierać filmy z YouTube dla Androida. Teraz chcę, żeby tak, jeśli grasz wideo w natywnej aplikacji YouTube, możesz je również pobrać. Aby to zrobić, muszę poznać zamiar, jaki aplikacja natywna YouTube uruchamia, aby móc grać w aplikację YouTube.
Mogłem to zrobić w prosty sposób, gdybym miał program YouTube na moim emulatorze, więc moje pierwsze pytanie brzmi:
1. Czy mogę pobrać aplikację YouTube dla mojego emulatora, lub ...
2. Jakie są używane intencje gdy użytkownik wybierze wideo do odtwarzania.

  0

To może pomóc zbyt http://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ 10 kwi. 172017-04-10 05:31:31

7

Youtube (i aplikacja Market) mają być używane tylko ze specjalnymi ROMami, które Google udostępnił dla G1 i G2. Więc nie możesz ich uruchomić w OpenSource-ROM, tak jak niestety w Emulatorze. Cóż, może możesz, ale nie w oficjalnie obsługiwany sposób.

  0

Znasz nieobsługiwany sposób? 01 mar. 092009-03-01 07:03:45

  0

Przepraszam, nie. Po prostu nie chciał wykluczyć tej możliwości. 01 mar. 092009-03-01 16:12:15


5

Znaleziono go:

03-18 12:40:02.842: INFO/ActivityManager(68): Starting activity: Intent { action=android.intent.action.VIEW data=(URL TO A FLV FILE OF THE VIDEO) type=video/* comp={com.google.android.youtube/com.google.android.youtube.YouTubePlayer} (has extras) } 
  0

Awesome! Więc po prostu stworzyłeś dla tego odbiornik? 26 wrz. 172017-09-26 15:04:25


162

To będzie działać na urządzeniu ale nie emulatora za Lemmy's answer.

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM"))); 
  0

To był dla mnie zwycięzca, jeśli masz zainstalowaną aplikację YouTube, pyta, czy chcesz jej użyć. 23 mar. 102010-03-23 16:37:52

  0

użyj tego kodu, aby uzyskać wybór intencji dla youtube i przeglądarki. jak to ukryć? po prostu muszę połączyć się bezpośrednio z odtwarzaczem YouTube. 21 maj. 102010-05-21 14:13:08

  0

@Praveen Chandrasekaran aplikacja youtube może nie być dostępna - najlepiej użyć funkcji Intent i pozwolić systemowi na określenie, które zainstalowane aplikacje obsługują żądania. 23 wrz. 102010-09-23 12:27:53

+3

Musisz zadzwonić do setClassName w intencji przed wywołaniem funkcji startActivity, w następujący sposób: intent.videoClient.setClassName ("com.google.android.youtube", "com.google.android.youtube.PlayerActivity"); Zobacz odpowiedź Sany na przykład działającego kodu. 28 sty. 112011-01-28 15:50:02

  0

To nie działa dla mnie, na prawdziwym urządzeniu z zainstalowaną aplikacją youtube. Nadal otwiera przeglądarkę internetową. Podejście Bibbity poniżej działa jednak. A może komentarz Symmetric nie próbował tego. 11 lis. 112011-11-11 08:10:14

  0

+1 ładne .. i jak ustawić odtwarzacz YouTube jako domyślnego odtwarzacza ... 09 lut. 122012-02-09 10:01:49

  0

To nie działa dla mnie w ogóle na prawdziwym urządzeniu. Po prostu mówi, że nie może odtworzyć wideo. Mam zainstalowany YouTube. 18 mar. 122012-03-18 23:05:30

  0

podczas korzystania z tego kodu mogę odtwarzać wideo, ale gdy wybrałem przeglądarkę, ładowanie strony youtube i muszę kliknąć, czy jest jakiś sposób na uniknięcie tego kroku 25 lip. 132013-07-25 09:02:27

  0

mhhh. taki sam, ale inny. poza tym, że masz jedną linijkę;) ale to też działa. 10 cze. 142014-06-10 14:49:37

  0

http://stackoverflow.com/a/12439378/578309 jest dłuższy, ale bezpieczniejszy, rozwiązanie to jest krótsze, ale może nie działać na niektórych urządzeniach. 10 lut. 172017-02-10 11:33:33

  0

Możesz również wypróbować interfejs API odtwarzacza YouTube http://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ 07 kwi. 172017-04-07 13:40:39


1

Można też po prostu chwycić WebViewClient

wvClient = new WebViewClient() { 
@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if (url.startsWith("youtube:")) { 
    String youtubeUrl = "http://www.youtube.com/watch?v=" 
    + url.Replace("youtube:", ""); 
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(youtubeUrl))); 
} 
return false; 
} 

pracował dobrze w mojej aplikacji.


0

Spróbuj tego,

 WebView webview = new WebView(this); 

     String htmlString = "<html> <body> <embed src=\"youtube link\"; type=application/x-shockwave-flash width="+widthOfDevice+" height="+heightOfDevice+"> </embed> </body> </html>"; 

     webview.loadData(htmlString ,"text/html", "UTF-8"); 
  0

To nie działa dla mnie. 16 lis. 102010-11-16 23:49:34

  0

To też nie działa dla mnie. Czy jest jakikolwiek wymagany flash player w emulatorze? 16 lis. 112011-11-16 06:15:11


10
Intent videoClient = new Intent(Intent.ACTION_VIEW); 
    videoClient.setData(Uri.parse("http://m.youtube.com/watch?v="+videoId)); 
    startActivityForResult(videoClient, 1234); 

gdzie videoID jest id wideo z YouTube filmu, który ma być odtworzony. Ten kod działa poprawnie na Motorola Milestone.

Zasadniczo możemy jednak sprawdzić, jaka aktywność została załadowana po uruchomieniu aplikacji Youtube i odpowiednio zastąpić nazwę packageName i className.

  0

Otrzymuję następujący błąd. 'BŁĄD/AndroidRuntime (1519): Spowodowany przez: android.content.ActivityNotFoundException: Nie można znaleźć jawnej klasy aktywności {com.google.android.youtube/com.google.android.youtube.PlayerActivity}; czy zadeklarowałeś tę aktywność w swoim AndroidManifest.xml? ' Prosimy o rozwiązanie. 14 cze. 112011-06-14 14:06:37

  0

Jakie jest twoje urządzenie? Ta nazwa działania jest specyficzna tylko dla Milestone Motoroli, ale jeśli chcesz zobaczyć nazwę działania dla działania youtube, podłącz urządzenie w trybie debugowania USB i zobacz LogCat po kliknięciu na Youtube App. Powinien podać ci nazwę pakietu wraz z nazwą działania. 15 cze. 112011-06-15 02:00:53


1

Spróbuj tego:

public class abc extends Activity implements OnPreparedListener{ 

    /** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));   


    @Override 
     public void onPrepared(MediaPlayer mp) { 
     // TODO Auto-generated method stub 

    } 
    } 
} 

4

Odpowiadając na stare pytanie, żeby poinformować was, że pakiet uległy zmianie, heres aktualizacji

Intent videoClient = new Intent(Intent.ACTION_VIEW); 
videoClient.setData("VALID YOUTUBE LINK WITH HTTP"); 
videoClient.setClassName("com.google.android.youtube", "com.google.android.youtube.WatchActivity"); 
startActivity(videoClient); 

To działa bardzo dobrze, ale podczas rozmowy normalny Intent z ACTION_VIEW z poprawnym adresem URL youtube uzyskuje selektor aktywności w każdym razie.


26

Oto jak rozwiązać ten problem:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube://" + video_id); 
startActivity(intent); 

Teraz zrobiłem kilka badań, wygląda na to, że tylko potrzebna „vnd.youtube:VIDEO_ID” zamiast dwóch ukośników po dwukropku (” :”vs«: //»):

http://it-ride.blogspot.com/2010/04/android-youtube-intent.html

próbowałem większość sugestii tutaj i tak naprawdę nie działa bardzo dobrze ze wszystkimi rzekomych«bezpośrednich»metod podnoszących wyjątki. Zakładam, że przy mojej metodzie, jeśli aplikacja YouTube NIE jest zainstalowana, system operacyjny ma domyślną pozycję zastępczą czegoś innego niż awarię aplikacji.Ta aplikacja teoretycznie działa tylko na urządzeniach z aplikacją YouTube, więc to nie powinno być problemu.

  0

To zadziałało dla mnie :) 01 lis. 112011-11-01 13:35:39

  0

Witam, czy można odtwarzać filmy z YouTube'a w App zamiast grać w Webview? 08 paź. 122012-10-08 06:07:31

  0

@Scorpion Istnieje YouTube API, z taką możliwością. 31 maj. 132013-05-31 19:13:53

  0

Działa świetnie! Ale w pierwszym wierszu brakuje jednego prawego nawiasu. 17 sty. 162016-01-17 13:58:43


18

Użyj mojego kodu .. Jestem w stanie odtwarzać wideo youtube przy użyciu tego kodu ... wystarczy, aby zapewnić youtube id wideo w zmiennej „videoID” ....

String videoId = "Fee5vbFLYM4"; 
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:"+videoId)); 
intent.putExtra("VIDEO_ID", videoId); 
startActivity(intent); 
+3

To bezpośrednio uruchamia aplikację YouTube, z pominięciem menu wyboru, w którym możesz wybrać między chrome a YouTube na JellyBean. 29 sie. 122012-08-29 08:16:57

+2

@ r1k0 Tak .... Ten kod będzie bezpośrednio uruchamiał domyślną aplikację YouTube do odtwarzania wideo z youtube we wszystkich typach androidów (nie tylko w JellyBean). 29 sie. 122012-08-29 14:00:50

+1

Jeśli masz więcej niż jedną aplikację odtwarzacza YouTube (np. Firetube), nadal będzie można wybrać. Po prostu mówię i wyjaśniam. 12 kwi. 162016-04-12 03:56:23


5

EDIT: poniżej wdrożenie okazało się mieć problemy na przynajmniej niektórych urządzeniach HTC (uległy awarii). Z tego powodu nie używam nazwy setclassname i trzymam się menu wyboru akcji. Zdecydowanie odradzam używanie mojej starej implementacji.

Poniżej znajduje się stary realizacja:

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(youtubelink)); 
       if(Utility.isAppInstalled("com.google.android.youtube", getActivity())) { 
        intent.setClassName("com.google.android.youtube", "com.google.android.youtube.WatchActivity"); 
       } 
       startActivity(intent); 

Gdzie Utility jest moje osobiste klasy narzędzie z następującym Methode:

public static boolean isAppInstalled(String uri, Context context) { 
    PackageManager pm = context.getPackageManager(); 
    boolean installed = false; 
    try { 
     pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES); 
     installed = true; 
    } catch (PackageManager.NameNotFoundException e) { 
     installed = false; 
    } 
    return installed; 
} 

Najpierw sprawdź, czy jest zainstalowany youtube, jeżeli jest on zainstalowany , Mówię Androidowi, który pakiet wolę otworzyć moje intencje.

  0

Co to jest narzędzie? Nie widzę tego jako dostępnego importu. 03 kwi. 122012-04-03 03:49:54

  0

@IgorG. Dzięki za wskazanie, zaktualizowana odpowiedź. 03 kwi. 122012-04-03 07:42:57

  0

+1 dla EDYCJI. Używanie wyraźnej nazwy klasy jest zdecydowanie niewiarygodne. 21 cze. 122012-06-21 08:46:51


191

I jak o tym:

public static void watchYoutubeVideo(Context context, String id){ 
    Intent appIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:" + id)); 
    Intent webIntent = new Intent(Intent.ACTION_VIEW, 
       Uri.parse("http://www.youtube.com/watch?v=" + id)); 
    try { 
     context.startActivity(appIntent); 
    } catch (ActivityNotFoundException ex) { 
     context.startActivity(webIntent); 
    } 
} 
+2

To powinna być najwyższa głosowana odpowiedź. 10 cze. 142014-06-10 18:03:27

+3

Rekwizyty dotyczące obsługi aplikacji YouTube, jeśli są dostępne, i jeśli to konieczne, wracają do przeglądarki. Dla tych, którzy idą na to pytanie, jest to odpowiedź do użycia. 30 maj. 152015-05-30 22:04:05

  0

Jak uruchomić aplikację youtube do wyszukiwania przez słowo kluczowe np. Chcę, aby aplikacja YouTube została uruchomiona, a następnie w tym poszukiwaniu "steve jobs" 13 wrz. 152015-09-13 09:20:42

  0

@RusheelJain, który byłby nowy problem. To, co bym robił, szukał "android intent search text" lub coś w tym stylu. 01 paź. 152015-10-01 09:23:02

+1

IMHO powinno to być zaakceptowaną odpowiedzią. Wielkie dzięki! 21 lis. 152015-11-21 14:31:07

  0

Dlaczego nie jest to zaakceptowana odpowiedź? 23 lip. 162016-07-23 23:26:58

  0

'Intent appIntent = new Intent (Intent.ACTION_VIEW, Uri.parse (" vnd.youtube: "+ id)); 'W tym wierszu usunięto" vnd.youtube ", ponieważ dodawałem dodatkowy adres URL witryny youtube.com do adresu URL" id'. 13 paź. 162016-10-13 13:17:26

+1

To jest odpowiedź, ale może powinieneś usunąć statyczne w deklaracji funkcji 20 maj. 172017-05-20 12:51:42

  0

to jest to, czego potrzebowałem! 25 wrz. 172017-09-25 10:44:16


2

Youtube ma teraz API odtwarzacza, należy spróbować.

https://developers.google.com/youtube/android/player/


2
/** 
* Intent to open a YouTube Video 
* 
* @param pm 
*   The {@link PackageManager}. 
* @param url 
*   The URL or YouTube video ID. 
* @return the intent to open the YouTube app or Web Browser to play the video 
*/ 
public static Intent newYouTubeIntent(PackageManager pm, String url) { 
    Intent intent; 
    if (url.length() == 11) { 
     // youtube video id 
     intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube://" + url)); 
    } else { 
     // url to video 
     intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
    } 
    try { 
     if (pm.getPackageInfo("com.google.android.youtube", 0) != null) { 
      intent.setPackage("com.google.android.youtube"); 
     } 
    } catch (NameNotFoundException e) { 
    } 
    return intent; 
} 

2

Najbezpieczniejszym sposobem, aby uruchomić wideo na innej aplikacji jest najpierw próbuje rozwiązać paczkę, innymi słowy, należy sprawdzić, czy aplikacja jest zainstalowana w urządzeniu. Jeśli więc chcesz uruchomić film na youtube, możesz zrobić coś takiego:

public void playVideo(String key){ 

    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:" + key)); 

    // Check if the youtube app exists on the device 
    if (intent.resolveActivity(getPackageManager()) == null) { 
     // If the youtube app doesn't exist, then use the browser 
     intent = new Intent(Intent.ACTION_VIEW, 
       Uri.parse("http://www.youtube.com/watch?v=" + key)); 
    } 

    startActivity(intent); 
} 

0

To zadziała, jeśli zainstalujesz aplikację youtube. Jeśli nie, pojawi się ekran wyboru, aby wybrać inną aplikację: Prace

Uri uri = Uri.parse("https://www.youtube.com/watch?v=bESGLojNYSo"); 
uri = Uri.parse("vnd.youtube:" + uri.getQueryParameter("v")); 
startActivity(new Intent(Intent.ACTION_VIEW, uri)); 

0

Ta funkcja w porządku dla mnie ... po prostu przekazać ciąg URL w funkcji:

void watch_video(String url) 
{ 
    Intent yt_play = new Intent(Intent.ACTION_VIEW, Uri.parse(url)) 
    Intent chooser = Intent.createChooser(yt_play , "Open With"); 

    if (yt_play .resolveActivity(getPackageManager()) != null) { 
        startActivity(chooser); 
       } 
} 

0

Można użyć odtwarzacza YouTube na Androida API do odtwarzania wideo, jeśli zainstalowana jest aplikacja Youtube, w przeciwnym razie po prostu poproś użytkownika o wybór dostępnych przeglądarek internetowych.

if(YouTubeIntents.canResolvePlayVideoIntent(mContext)){ 
        mContext.startActivity(YouTubeIntents.createPlayVideoIntent(mContext, mVideoId)); 
       } 
       else { 
        Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=" + mVideoId)); 
        mContext.startActivity(webIntent); 
       }