Android YouTube app Play Video Intent

2018-12-31 15:03发布

I have created a app where you can download YouTube videos for android. Now, I want it so that if you play a video in the YouTube native app you can download it too. To do this, I need to know the Intent that the YouTube native app puts out in order to play the YouTube app.
I could do this easially if I had the YouTube program on my emulator, so my 1st question is:
1. Can I download the YouTube app for my emulator, or...
2. What is the intent used when the user selects a video for playback.

18条回答
怪性笑人.
2楼-- · 2018-12-31 15:12
/**
 * 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;
}
查看更多
零度萤火
3楼-- · 2018-12-31 15:12

You can use the Youtube Android player API to play the video if Youtube app is installed, otherwise just prompt the user to choose from the available web browsers.

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);
                }
查看更多
冷夜・残月
4楼-- · 2018-12-31 15:15

This will work on a device but not the emulator per Lemmy's answer.

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));
查看更多
听够珍惜
5楼-- · 2018-12-31 15:15

Try this:

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

    }
  }
}
查看更多
忆尘夕之涩
6楼-- · 2018-12-31 15:20

Use my code .. I am able to play youtube video using this code ... you just need to provide youtube video id in the "videoId" variable ....

String videoId = "Fee5vbFLYM4";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:"+videoId)); 
intent.putExtra("VIDEO_ID", videoId); 
startActivity(intent); 
查看更多
孤独寂梦人
7楼-- · 2018-12-31 15:20

Replying to old question, just to inform you guys that package have changed, heres the update

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

This works very well, but when you call normal Intent with ACTION_VIEW with valid youtube URL user gets the Activity selector anyways.

查看更多
登录 后发表回答