Приложение для Android YouTube Play Video Intent


113

Я создал приложение, в котором вы можете скачать видео на YouTube для Android. Теперь я хочу, чтобы, если вы воспроизводите видео в собственном приложении YouTube, вы можете его загрузить. Для этого мне нужно знать намерение, которое запускает приложение для родного приложения YouTube, чтобы играть в приложение YouTube.
Я мог бы сделать это легко, если бы у меня была программа YouTube на моем эмуляторе, поэтому мой первый вопрос:
1. Могу ли я загрузить приложение YouTube для своего эмулятора или ...
2. Каково намерение использовать когда пользователь выбирает видео для воспроизведения.

  0

Это тоже может помочь http://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ 10 апр. 172017-04-10 05:31:31

7

Приложение Youtube (и Market) должно использоваться только со специальными ROM, которые Google выпустил для G1 и G2. К сожалению, вы не можете запускать их в OpenSource-ROM, например, тот, который используется в эмуляторе. Ну, может быть, вы можете, но не официально поддерживаемым способом.

  0

Вы знаете неподдерживаемый путь? 01 мар. 092009-03-01 07:03:45

  0

Извините, нет. Просто не хотел исключать возможность. 01 мар. 092009-03-01 16:12:15


5

Нашел:

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

Удивительный! Так вы просто создали для этого вещательный приемник? 26 сен. 172017-09-26 15:04:25


162

Это будет работать на Устройство но не эмулятор на Lemmy's answer.

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

Это был победитель для меня, если у вас установлено приложение YouTube, оно спрашивает, хотите ли вы использовать это. 23 мар. 102010-03-23 16:37:52

  0

используйте этот код. Я получаю выбор намерения для youtube и браузера. как скрыть это? Мне просто нужно напрямую подключиться к плееру youtube. 21 май. 102010-05-21 14:13:08

  0

@Praveen Chandrasekaran приложение YouTube может быть недоступно - лучше использовать Intent и позволить системе работать, какие установленные приложения поддерживают запрос. 23 сен. 102010-09-23 12:27:53

+3

Вам нужно будет вызвать setClassName в Intent перед вызовом startActivity, например: intent.videoClient.setClassName («com.google.android.youtube», «com.google.android.youtube.PlayerActivity»); См. Ответ Саны для примера рабочего кода. 28 янв. 112011-01-28 15:50:02

  0

Это не работает для меня, на реальном устройстве с установленной программой YouTube. Он по-прежнему открывает веб-браузер. Однако подход Bibbity ниже работает. Или, может быть, комментарий Симметрика, не пробовал это. 11 ноя. 112011-11-11 08:10:14

  0

+1 хороший .. и как установить плеер youtube в качестве игрока по умолчанию ... 09 фев. 122012-02-09 10:01:49

  0

Это не работает для меня вообще на реальном устройстве. Просто говорит, что он не может воспроизводить видео. У меня установлен YouTube. 18 мар. 122012-03-18 23:05:30

  0

, используя этот код, я могу воспроизводить видео, но после того, как я выбрал свой браузер, он загрузил веб-страницу youtube и мне нужно щелкнуть, есть ли способ избежать этого шага 25 июл. 132013-07-25 09:02:27

  0

mhhh. то же самое, но другое. кроме того, что у вас есть один лайнер;), но это также работает. 10 июн. 142014-06-10 14:49:37

  0

http://stackoverflow.com/a/12439378/578309 длиннее, но безопаснее, это решение короче, но может не работать на некоторых устройствах. 10 фев. 172017-02-10 11:33:33

  0

Вы также можете попробовать API-интерфейс Youtube Player http://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ 07 апр. 172017-04-07 13:40:39


1

Вы также можете просто захватить 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; 
} 

работал отлично в мое приложение.


0

Попробуйте это,

 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

Это не работает для меня. 16 ноя. 102010-11-16 23:49:34

  0

Это тоже не сработало для меня. Есть ли какие-либо требования к flash-плееру в эмуляторе. 16 ноя. 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); 

где VideoID это идентификатор видео видео YouTube, который должен быть воспроизведен. Этот код отлично работает на Motorola Milestone.

Но в основном мы можем проверить, какая активность загружена при запуске приложения Youtube и, соответственно, заменить имя пакета и имя класса.

  0

Я получаю следующую ошибку. 'ОШИБКА/AndroidRuntime (1519): Вызванный: android.content.ActivityNotFoundException: Не удалось найти явную активность класса {com.google.android.youtube/com.google.android.youtube.PlayerActivity}; Вы заявили об этом в своем AndroidManifest.xml? ' Пожалуйста, разрешите это. 14 июн. 112011-06-14 14:06:37

  0

Что вы ищете? Это название деятельности относится только к Motorola Milestone, но если вы хотите увидеть название активности для виджета активности youtube на вашем устройстве в режиме отладки USB и увидеть LogCat при нажатии на приложение Youtube. Он должен дать вам имя пакета alogn с именем активности. 15 июн. 112011-06-15 02:00:53


1

Попробуйте это:

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

Отвечая на старый вопрос, только чтобы сообщить вам, ребята, которые изменили пакет, Херес обновление

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

Это работает очень хорошо, но когда вы называете нормальным Intent с ACTION_VIEW с действительным пользователем URL-адреса youtube получает селектор активности в любом случае.


26

Вот как я решил эту проблему:

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

Теперь, когда я сделал некоторые дополнительные исследования, это выглядит как я только нужно «vnd.youtube:VIDEO_ID» вместо двух косых черт после двоеточия (» :»против„: //“):

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

Я попытался большинство предложений здесь, и они на самом деле не очень хорошо работает со всеми предполагаемыми„прямых“методов, повышающих исключения. Я бы предположил, что с помощью моего метода, если приложение YouTube НЕ установлено, ОС имеет резервную позицию по умолчанию, отличную от срыва приложения.Приложение теоретически только на устройствах с приложением YouTube на них в любом случае, так что это должно быть не проблема.

  0

Это сработало для меня :) 01 ноя. 112011-11-01 13:35:39

  0

Привет, Возможно ли воспроизводить видео youtube в приложении вместо того, чтобы играть в Webview? 08 окт. 122012-10-08 06:07:31

  0

@Scorpion Существует API-интерфейс youtube с такой возможностью. 31 май. 132013-05-31 19:13:53

  0

Он отлично работает! Но вам не хватает одной правой скобки на первой строке. 17 янв. 162016-01-17 13:58:43


18

Используйте мой код .. Я могу играть Youtube видео с помощью этого кода ... Вам просто нужно предоставить ID видео YouTube в «VideoID» переменной ....

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

Это напрямую запускает приложение YouTube, минуя меню выбора, в котором вы можете выбирать между хром и YouTube на JellyBean. 29 авг. 122012-08-29 08:16:57

+2

@ r1k0 Да .... Этот код будет напрямую запускать приложение Youtube по умолчанию, чтобы воспроизводить видео youtube во всех типах android oses (не только в JellyBean). 29 авг. 122012-08-29 14:00:50

+1

Если у вас более одного приложения для плеера YouTube (пример Firetube), он все равно сделает выбор. Просто говорю и разъясняю. 12 апр. 162016-04-12 03:56:23


5

EDIT: ниже реализации оказались проблемы, по крайней мере, на некоторых устройствах HTC (они разбились). По этой причине я не использую setclassname и не придерживаюсь меню выбора действий. Я решительно отвергаю использование моей старой реализации.

Ниже старая реализация:

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

Где Utility моя личная утилита класса со следующими 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; 
} 

Сначала проверить, установлен ли на YouTube, если он установлен , Я говорю андроид, какой пакет предпочитаю открывать свои намерения.

  0

Что такое утилита? Я не вижу в нем доступного импорта. 03 апр. 122012-04-03 03:49:54

  0

@IgorG. Спасибо, что указали, обновленный ответ. 03 апр. 122012-04-03 07:42:57

  0

+1 для EDIT. Использование явного имени класса определенно ненадежно. 21 июн. 122012-06-21 08:46:51


191

А как насчет этого:

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

Это должен быть самый высокий голосовой ответ. 10 июн. 142014-06-10 18:03:27

+3

Поддержки для поддержки приложения YouTube, если он доступен, и, при необходимости, обратно в веб-браузер. Для тех, кто подходит к этому вопросу, это ответ на использование. 30 май. 152015-05-30 22:04:05

  0

Как запустить приложение YouTube для поиска по ключевому слову например. Я хочу, чтобы приложение youtube было запущено, а затем в этом поиске для «steve jobs» 13 сен. 152015-09-13 09:20:42

  0

@ RusheelJain это будет новой проблемой. То, что я сделал бы, это поиск «текста поиска намерения для поиска в Android-браузере» или что-то в этом роде. 01 окт. 152015-10-01 09:23:02

+1

ИМХО это должен быть принятый ответ. Большое спасибо! 21 ноя. 152015-11-21 14:31:07

  0

Почему это не принято? 23 июл. 162016-07-23 23:26:58

  0

'Intent appIntent = новое намерение (Intent.ACTION_VIEW, Uri.parse (" vnd.youtube: "+ id)); 'В этой строке, удаляющей' vnd.youtube', работал для меня, поскольку это добавляло дополнительный URL-адрес youtube.com к URL-адресу id. 13 окт. 162016-10-13 13:17:26

+1

Это ответ, но, возможно, вы должны удалить статический текст в объявлении функции 20 май. 172017-05-20 12:51:42

  0

, это то, что мне нужно! 25 сен. 172017-09-25 10:44:16


2

Youtube теперь игрок апи, Вы должны попробовать это.

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

Самый безопасный способ запустить видео на другое приложение является первой попытке разрешить пакет, другими словами, убедитесь, что приложение установлено на устройстве. Так что если вы хотите, чтобы запустить видео на YouTube вы могли бы сделать что-то вроде этого:

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

Это будет работать, если установлено приложение YouTube. Если нет, то Chooser будет отображаться, чтобы выбрать другое приложение:

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

Эта функция отлично работает для меня ... просто передать URL-адрес строки в функции:

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

Вы можете использовать плеер Youtube Android API для воспроизведения видео, если приложение Youtube установлено, иначе просто попросите пользователя выбрать из доступных веб-браузеров.

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