Isa*_*ler 142 youtube android emulation android-intent
我创建了一个应用程序,您可以在其中下载Android视频.现在,我想要它,以便如果您在YouTube原生应用中播放视频,您也可以下载它.为此,我需要了解YouTube原生应用推出的Intent才能播放YouTube应用.
如果我在我的模拟器上安装了YouTube程序,我可以轻松地做到这一点,所以我的第一个问题是:
1.我可以为我的模拟器下载YouTube应用程序,或者......
2.当用户选择视频时使用的意图是什么用于播放.
Rog*_*eto 250
那怎么样:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
emm*_*mby 171
根据Lemmy的回答,这将适用于设备但不适用于模拟器.
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));
Run Code Online (Sandbox Code Playgroud)
Bib*_*Boo 33
这是我解决这个问题的方法:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube://" + video_id));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
现在我已经做了更多的研究,看起来我只需要'vnd.youtube:VIDEO_ID'而不是冒号后的两个斜杠(':'vs.'://'):
http://it-ride.blogspot.com/2010/04/android-youtube-intent.html
我在这里尝试了大部分建议,并且它们并没有真正用于所有假设的"直接"方法提高异常.我认为,根据我的方法,如果未安装YouTube应用程序,操作系统会有一个默认的后备位置,而不是崩溃应用程序.该应用程序理论上只适用于装有YouTube应用程序的设备,所以这应该是一个非问题.
Sou*_*hak 18
使用我的代码..我可以使用此代码播放youtube视频...您只需要在"videoId"变量中提供youtube视频ID ....
String videoId = "Fee5vbFLYM4";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:"+videoId));
intent.putExtra("VIDEO_ID", videoId);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
San*_*ana 10
Intent videoClient = new Intent(Intent.ACTION_VIEW);
videoClient.setData(Uri.parse("http://m.youtube.com/watch?v="+videoId));
startActivityForResult(videoClient, 1234);
Run Code Online (Sandbox Code Playgroud)
其中videoId是必须播放的YouTube视频的视频ID.此代码适用于Motorola Milestone.
但基本上我们可以做的是检查启动Youtube应用程序时加载的活动,并相应地替换packageName和className.
Youtube(和Market应用程序)只能用于特殊的ROM,Google为G1和G2发布了这些ROM.所以你不能在OpenSource-ROM中运行它们,就像在模拟器中使用的那样,很遗憾.好吧,也许你可以,但不是以官方支持的方式.
编辑:以下实施证明至少在一些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);
Run Code Online (Sandbox Code Playgroud)
Utility是我自己的个人实用程序类,具有以下方法:
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;
}
Run Code Online (Sandbox Code Playgroud)
首先我检查你是否安装了youtube,如果安装了,我告诉android我更喜欢打开我的意图.
找到了:
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) }
Run Code Online (Sandbox Code Playgroud)
回复老问题,只是为了通知大家包已经改变了,这里是更新
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);
Run Code Online (Sandbox Code Playgroud)
这很有效,但是当您使用 ACTION_VIEW 使用有效的 youtube URL 调用普通 Intent 时,用户无论如何都会获取 Activity 选择器。
在不同的应用程序上运行视频的最安全方法是首先尝试解析包,换句话说,检查该应用程序是否安装在设备上。因此,如果您想在 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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
199398 次 |
| 最近记录: |