Android YouTube приложение Play Video Intent - PullRequest
135 голосов
/ 22 февраля 2009

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

Ответы [ 18 ]

2 голосов
/ 04 октября 2014
/**
 * 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 голосов
/ 10 февраля 2014

На YouTube теперь есть плеер api, попробуйте.

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

1 голос
/ 09 ноября 2010

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

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

1 голос
/ 21 марта 2011

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

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

    }
  }
}
0 голосов
/ 19 января 2018

Вы можете использовать API проигрывателя YouTube для Android для воспроизведения видео, если установлено приложение 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);
}
0 голосов
/ 13 ноября 2017

Эта функция отлично работает для меня ... просто передайте строку 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 голосов
/ 06 ноября 2017

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

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 голосов
/ 09 ноября 2010

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

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