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);
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);
}
/**
* 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
你也可以 grab 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
试试这个:
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
}
}
}
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 ) );
18 回答
那怎么样:
这将适用于设备,但不适用于Lemmy's answer的模拟器 .
这是我解决这个问题的方法:
现在我已经做了更多的研究,看起来我只需要'vnd.youtube:VIDEO_ID'而不是冒号后的两个斜杠(':'vs.'://'):
http://it-ride.blogspot.com/2010/04/android-youtube-intent.html
我在这里尝试了大部分建议,并且它们并没有真正用于所有假设的“直接”方法提高异常 . 我认为,根据我的方法,如果未安装YouTube应用程序,操作系统会有一个默认的后备位置,而不是崩溃应用程序 . 该应用程序理论上只适用于装有YouTube应用程序的设备,所以这应该是一个非问题 .
使用我的代码..我可以使用此代码播放youtube视频...您只需要在“videoId”变量中提供youtube视频ID ....
其中videoId是必须播放的YouTube视频的视频ID . 此代码适用于Motorola Milestone .
但基本上我们可以做的是检查启动Youtube应用程序时加载的活动,并相应地替换packageName和className .
Youtube(和Market应用程序)只能用于特殊的ROM,Google为G1和G2发布了这些ROM . 所以你不能在OpenSource-ROM中运行它们,就像在模拟器中使用的那样,很遗憾 . 好吧,也许你可以,但不是以官方支持的方式 .
找到了:
编辑:以下实施证明至少在一些HTC设备上有问题(它们崩溃了) . 因此我不使用setclassname并坚持使用动作选择器菜单 . 我强烈反对使用旧的实现 .
Following is the old implementation:
Utility是我自己的个人实用程序类,具有以下方法:
首先我检查你是否安装了youtube,如果安装了,我告诉android我更喜欢打开我的意图 .
回答旧问题,只是为了通知你们这些包已经改变了,继续更新
这非常有效,但是当您使用有效的youtube URL调用带有ACTION_VIEW的正常Intent时,用户仍会获得Activity选择器 .
在不同的应用程序上运行视频最安全的方法是首先尝试解析程序包,换句话说,检查应用程序是否已安装在设备上 . 所以如果你想在youtube上运行一个视频你会做这样的事情:
Youtube现在有一个玩家api,你应该尝试一下 .
https://developers.google.com/youtube/android/player/
你也可以 grab
WebViewClient
在我的应用程序中工作得很好 .
试试这个:
试试这个,
如果安装了youtube app,这将有效 . 如果没有,选择器将显示选择其他应用程序:
这个函数适合我...只需在函数中传递url字符串:
如果安装了Youtube应用程序,您可以使用Youtube Android播放器API播放视频,否则只需提示用户从可用的Web浏览器中进行选择 .