Android YouTubeアプリPlay Video Intent


113

Android用のYouTube動画をダウンロードできるアプリを作成しました。さて、YouTubeのネイティブアプリで動画を再生すると、それもダウンロードできるようになります。これを行うには、YouTubeアプリを再生するためにYouTubeネイティブアプリが出しているインテントを知る必要があります。
私のエミュレータでYouTubeプログラムを持っていた場合、私はこれをeasially行うことができるので、私の最初の質問は
です。1.私のエミュレータ用のYouTubeアプリをダウンロードできますか?
2.意図は何ですか?ユーザが再生のためにビデオを選択したとき。

  0

これは、あなたがサポートされていない道を知っていますあまりにもhttp://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ 10 4月. 172017-04-10 05:31:31

7

Youtube(およびマーケットアプリケーション)は、GoogleがG1とG2用にリリースした特別なROMでのみ使用されることになっています。残念なことに、エミュレータで使用されているようなOpenSource-ROMでは実行できません。まあ、おそらくできますが、公式にはサポートされていません。

  0

役立つかもしれませんか? 01 3月. 092009-03-01 07:03:45

  0

申し訳ありません。可能性を除外したくないだけです。 01 3月. 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 9月. 172017-09-26 15:04:25


162

をこれは、デバイスなくエミュレータLemmy's answerあたり上で動作します。あなたはまた、単に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; 
} 

をつかむことができ

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

これは私のための勝者だった、youtubeアプリがインストールされていれば、代わりにそれを使いたいかどうか尋ねる。 23 3月. 102010-03-23 16:37:52

  0

このコードを使用して、YouTubeとブラウザのインテントチューザを取得します。それを隠す方法?私はちょうどYouTubeプレーヤーに直接リンクする必要があります。 21 5月. 102010-05-21 14:13:08

  0

@Praveen Chandrasekaran youtubeのアプリは利用できないかもしれません - インテントを使い、アプリをインストールしたものがリクエストをサポートするようにシステムを動作させるのが最善です。 23 9月. 102010-09-23 12:27:53

+3

startActivityを呼び出す前に、IntentでsetClassNameを呼び出す必要があります(例:intent.videoClient.setClassName( "com.google.android.youtube"、 "com.google.android.youtube.PlayerActivity"); 実践的なコード例については、Sanaの回答を参照してください。 28 1月. 112011-01-28 15:50:02

  0

YouTubeアプリがインストールされた実際のデバイスでは、これは私のためには機能しません。それでもウェブブラウザは開きます。しかし、下のBibbityによるアプローチはうまくいく。あるいは、Symmetricのコメントは、それを試していない。 11 11月. 112011-11-11 08:10:14

  0

+1いいえ..デフォルトプレイヤーとしてYouTubeプレーヤーを設定する方法... 09 2月. 122012-02-09 10:01:49

  0

これは実際のデバイスではまったく機能しません。単にビデオを再生できないと言っています。私はYouTubeをインストールしている。 18 3月. 122012-03-18 23:05:30

  0

このコードを使用している間、私はビデオを再生することができますが、私は私のブラウザを選択した後、あなたのクリックする必要があります、この手順を避けるための方法はありますか? 25 7月. 132013-07-25 09:02:27

  0

mhhh。同じですけど、違います。 1つのライナーを持っていることを除いて);しかしこれも機能します。 10 6月. 142014-06-10 14:49:37

  0

また、Youtube Player APIも試してみることができます。http://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ 07 4月. 172017-04-07 13:40:39


1

は私のアプリではうまくいきました。


0

はVIDEOIDを再生する必要があるユーチューブの動画の動画IDです

 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 11月. 102010-11-16 23:49:34

  0

これも私のために働いていません。エミュレータにFlash Playerのrequiremntはありますか? 16 11月. 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); 

、これを試してみてください。このコードは、Motorola Milestoneで正常に動作します。

しかし、基本的には、Youtubeアプリを起動するときに読み込まれるアクティビティを確認し、それに応じてpackageNameとclassNameを置き換えることができます。ちょうどあなたのパッケージが変更された男、これは非常にうまく機能

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

HERESに更新を通知するために、古い質問に返信

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

次のエラーが表示されます。 'ERROR/AndroidRuntime(1519): 原因:android.content.ActivityNotFoundException: 明示的なアクティビティクラス{com.google.android.youtube/com.google.android.youtube.PlayerActivity}を見つけることができません。 あなたのAndroidManifest.xmlでこのアクティビティを宣言しましたか? ' これを問題なく解決します。 14 6月. 112011-06-14 14:06:37

  0

あなたのデバイスは何ですか?このアクティビティ名は、モトローラマイルストーンにのみ適用されますが、USBデバッグモードでデバイスのYouTubeアクティビティプラグインのアクティビティ名を表示し、Youtube AppをクリックしたときにLogCatを表示したい場合は、このアクティビティ名を使用します。それはあなたに活動名のalognのパッケージ名を与えるべきです。 15 6月. 112011-06-15 02:00:53


1

これを試してみてください有効なyoutube URLを持つACTION_VIEWを使用すると、ユーザーはアクティビティセレクタを取得します。 「(私は唯一の代わりに2つのスラッシュのコロンの後に「vnd.youtube:VIDEO_ID」必要なように見える、私はいくつかのより多くの研究を行ってきたことを今

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

:ここ


4

をしますが、通常の意向を呼び出すとき:


26

は、私はこの問題を解決する方法です:」対 『://』):

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

私はここでの提案のほとんどを試してみましたが、彼らが本当になって、 『ダイレクト』のすべてのメソッドが例外を上げると非常によく動作しませんでした。私の方法では、YouTubeアプリがインストールされていない場合、OSにはアプリをクラッシュさせる以外のデフォルトのフォールバックポジションがあると仮定します。アプリは理論的にはYouTubeアプリを搭載した端末でしか動作しないため、これは問題ではありません。

  0

これは私のために働いた:) 01 11月. 112011-11-01 13:35:39

  0

こんにちは、それはWebviewで再生するのではなく、アプリでYouTube動画を再生することは可能ですか? 08 10月. 122012-10-08 06:07:31

  0

@Scorpionこのような可能性を秘めたyoutube APIがあります。 31 5月. 132013-05-31 19:13:53

  0

素晴らしいです!しかし、最初の行には右括弧が1つもありません。 17 1月. 162016-01-17 13:58:43


18

EDIT

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

これは、YouTubeアプリケーションを直接開始し、chromeとYouTube on JellyBeanを選択できる選択メニューをバイパスします。 29 8月. 122012-08-29 08:16:57

+2

@ r1k0はい....このコードは、JellyBeanだけでなく、すべてのタイプのAndroid OSでYouTubeビデオを再生するために、デフォルトのYoutubeアプリケーションを直接起動します。 29 8月. 122012-08-29 14:00:50

+1

複数のyoutube playerアプリ(例Firetubeの例)がある場合でも、選択することができます。ちょうど言って、それを明確にする。 12 4月. 162016-04-12 03:56:23


5

.... ..私はこのコードを使用したユーチューブの動画を再生することができるよ...あなただけの「VIDEOID」変数にユーチューブの動画IDを提供する必要が私のコードを使用します。実装の下で少なくともいくつかのHTCデバイス(彼らはクラッシュした)に問題があることが判明しました。そのため、私はsetclassnameを使用せず、アクションチューザーメニューに固執します。古い実装を使用することを強くお勧めします。

後は、古い実装です:ユーティリティは、以下のMethodeのと私自身の個人的なユーティリティクラスです

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

:ユーチューブがインストールされている場合、それがインストールされている場合、私は、チェック

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

ファースト私は自分の意図を開くのが好きなパッケージをアンドロイドに伝えます。これについて

  0

ユーティリティとは何ですか?私は利用可能なインポートとしては表示されません。 03 4月. 122012-04-03 03:49:54

  0

@IgorG。それを指摘してくれてありがとう、更新された答え。 EDITの場合は 03 4月. 122012-04-03 07:42:57

  0

+1。明示的なクラス名の使用は確かに信頼できません。 21 6月. 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 6月. 142014-06-10 18:03:27

+3

YouTubeアプリを利用できる場合はサポートし、必要に応じてウェブブラウザに戻ることができます。この質問に来る人には、これが使える答えです。 30 5月. 152015-05-30 22:04:05

  0

などの検索キーワードを使用してyoutubeアプリを起動する方法。私はYouTubeのアプリを起動してから、 "steve jobs"の検索で 13 9月. 152015-09-13 09:20:42

  0

@RusheelJainが新しい問題になることを望みます。私がしたいのは、 "android youtube intent search text"などの検索です。 01 10月. 152015-10-01 09:23:02

+1

これは受け入れられた答えでなければなりません。どうもありがとう! 21 11月. 152015-11-21 14:31:07

  0

これはなぜ受け入れられない答えですか? 23 7月. 162016-07-23 23:26:58

  0

'Intent appIntent =新しいインテント(Intent.ACTION_VIEW、Uri.parse(" vnd.youtube: "+ id)); 'この行で' vnd.youtube'を削除してくれました。これはyoutube.comの余分なURLを 'id' urlに追加していたためです。 13 10月. 162016-10-13 13:17:26

+1

これは答えですが、多分関数宣言で静的を削除する必要があります 20 5月. 172017-05-20 12:51:42

  0

これは私が必要なものです! 25 9月. 172017-09-25 10:44:16


2

YouTubeのは、現在プレーヤAPIを持って、あなたはそれを試してみてください。

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アプリがインストールされている場合に動作します。ない場合は、チューは、他のアプリケーションを選択するまで表示されます:私のために

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プレーヤーを使用することができますYouTubeのアプリがインストールされている場合は、APIを使用して動画を再生します。そうでなければ、利用可能なウェブブラウザから選択するようにユーザーに促します。

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