如何从安卓应用程序打开YouTube应用

9

我有一个YouTube按钮,它将打开一个特定的 *频道*,为此我希望它在YouTube *应用程序* 中打开,以便从我的应用程序访问该频道。

Intent intent = new Intent(Intent.ACTION_VIEW , Uri.parse("https://www.youtube.com/channel/UCRmoG8dTnv0B7y9uoocikLw"));
context.startActivity(intent);

但是它可以在浏览器中打开.


尝试使用以下代码:startActivity(new Intent("android.intent.action.VIEW", Uri.parse("url"))); - Rohit
@Rohit,这个代码和原帖里的完全一样吗? - RvdK
尝试使用android.intent.action.VIEW。 - Rohit
4个回答

10

你应该明确地将它发送给 YouTube。你可以通过指定软件包来实现这一点:

intent.setComponent(new ComponentName("com.google.android.youtube","com.google.android.youtube.PlayerActivity"));

请注意,您还应该检查是否安装了YouTube!

Intent intent = new Intent(
    Intent.ACTION_VIEW , 
    Uri.parse("https://www.youtube.com/channel/UCRmoG8dTnv0B7y9uoocikLw"));
intent.setComponent(new ComponentName("com.google.android.youtube","com.google.android.youtube.PlayerActivity"));

PackageManager manager = context.getPackageManager();
List<ResolveInfo> infos = manager.queryIntentActivities(intent, 0);
if (infos.size() > 0) {
     context.startActivity(intent);
}else{
     //No Application can handle your intent
}

请注意,您可能希望在调用startActivity时捕获ActivityNotFoundException以回退到浏览器YouTube播放器。 - elimirks
正确的@elimirks,我已经将它添加到我的答案中。 - RvdK
1
我不认为这是正确的方法,主要是因为应用程序提供者可以更新/更改包名/活动名称。所有应用程序都应该通过正确的意图操作来启动。虽然这可能不会造成任何直接问题,但很容易被打破。(取决于Google...) - Gaurav Arora
真的,但另一种解决方案是将Youtube设置为处理此类URL的主要程序。 - RvdK

6
我发现这是一种简单的方法来做到这一点(假设您已经检查了是否安装了YouTube):
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.youtube.com/**YOURCHANNEL**"));
intent.setPackage("com.google.android.youtube");
startActivity(intent);

1
感谢提供 YouTube 的包名。 - RoCkDevstack

2
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(urlStr));
startActivity(intent);

"urlStr" 是您所需频道的网址。

1
Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse("https://www.youtube.com/"));
            intent.setPackage("com.google.android.youtube");
            PackageManager manager = getPackageManager();
            List<ResolveInfo> info = manager.queryIntentActivities(intent, 0);
            if (info.size() > 0) {
                startActivity(intent);
            } else {
                //No Application can handle your intent
            }

这是如何实现的..只提供"https://www.youtube.com/"将直接进入主页。虽然可以自定义网址以重定向到特定频道或视频。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接