Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从android应用程序打开youtube应用程序_Android_Android Intent - Fatal编程技术网

如何从android应用程序打开youtube应用程序

如何从android应用程序打开youtube应用程序,android,android-intent,Android,Android Intent,我有一个youtube按钮,它将打开一个特定的*频道*,我希望它在youtube*应用程序*中打开,以便从我的应用程序访问频道 Intent intent = new Intent(Intent.ACTION_VIEW , Uri.parse("https://www.youtube.com/channel/UCRmoG8dTnv0B7y9uoocikLw")); context.startActivity(intent); 但它正在浏览器中打开您应该明确地将其发送到youtube。可以通过指

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

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

但它正在浏览器中打开

您应该明确地将其发送到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
}
Intent意向=新意向(
意图、行动和观点,
解析https://www.youtube.com/channel/UCRmoG8dTnv0B7y9uoocikLw"));
setComponent(新组件名(“com.google.android.youtube”、“com.google.android.youtube.PlayerActivity”);
PackageManager=context.getPackageManager();
List infos=manager.querytentActivities(intent,0);
如果(infos.size()>0){
背景。开始触觉(意图);
}否则{
//没有应用程序可以处理您的意图
}

urlStr是您所需频道的url

我发现这是一种简单的方法(假设您已经检查安装了YouTube):

Intent-Intent=新意图(Intent.ACTION\u视图);
intent.setData(Uri.parse(“https://www.youtube.com/"));
intent.setPackage(“com.google.android.youtube”);
PackageManager=getPackageManager();
List info=manager.querytentActivities(intent,0);
如果(info.size()>0){
星触觉(意向);
}否则{
//没有应用程序可以处理您的意图
}

这就是你能做到的。。只提供“https://www.youtube.com/“将直接让你进入家庭喂养。当然,你可以自定义url重定向到特定的频道或视频。

试试这个startActivity(新的Intent(“android.Intent.action.VIEW”),Uri.parse(“url”)@Rohit这与OP的代码完全相同吗?试试这个android.intent.action.VIEWNote。另外,您可能希望在startActivity调用中捕获ActivityNotFoundException以返回浏览器youtube播放器。正确@elimirks,我已将其添加到我的答案中。我认为这不是正确的方法,主要是因为应用程序提供程序可以更新/更改PackageName/活动名称。所有应用程序都应通过正确的意图操作启动。虽然,这可能不会立即导致任何问题,但很容易损坏。(取决于谷歌…)没错,但另一个解决方案是将Youtube设置为此类URL的主处理程序。感谢您提供的
Youtube
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(urlStr));
startActivity(intent);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.youtube.com/**YOURCHANNEL**"));
intent.setPackage("com.google.android.youtube");
startActivity(intent);
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
            }