155 votes

Android YouTube app Play Video Intent

J'ai créé une application où vous pouvez télécharger des vidéos YouTube pour Android. Maintenant, je veux que si vous lisez une vidéo dans l'application native de YouTube, vous puissiez également la télécharger. Pour ce faire, j'ai besoin de connaître l'intention que l'application native YouTube émet afin de lire l'application YouTube.
Je pourrais le faire facilement si j'avais le programme YouTube sur mon émulateur, donc ma première question est la suivante :
1. Puis-je télécharger l'application YouTube pour mon émulateur, ou...
2. Quelle est l'intention utilisée lorsque l'utilisateur sélectionne une vidéo pour la lire.

0 votes

Je suis également en train d'essayer de créer une application de téléchargement de vidéos Youtube. Donc, je veux savoir si je dois obtenir une clé api pour cela ou si je peux simplement utiliser webview dans mon application ? @ASP

278voto

Roger Garzon Nieto Points 1006

Et que dire de ça :

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

6 votes

Il faut prendre en charge l'application YouTube si elle est disponible, et revenir au navigateur web si nécessaire. Pour ceux qui se posent cette question, c'est la réponse à utiliser.

0 votes

Comment lancer l'application youtube pour une recherche par mot-clé ? Par exemple, je veux que l'application youtube soit lancée et que l'on y recherche "steve jobs".

0 votes

@RusheelJain ce serait une nouvelle question. Ce que je ferais, c'est rechercher "Android youtube intent search text" ou quelque chose comme ça.

181voto

emmby Points 35359

Cela fonctionnera sur un appareil mais pas l'émulateur par La réponse de Lemmy .

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

0 votes

C'était le gagnant pour moi, si vous avez l'application YouTube installée, il vous demande si vous voulez l'utiliser à la place.

0 votes

J'ai utilisé ce code pour obtenir le sélecteur d'intention pour youtube et le navigateur. comment le cacher ? j'ai juste besoin d'un lien direct vers le lecteur youtube.

0 votes

@Praveen Chandrasekaran l'application youtube peut ne pas être disponible - il est préférable d'utiliser l'intention et de laisser le système déterminer quelles applications installées prennent en charge la demande.

35voto

Voici comment j'ai résolu ce problème :

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

Maintenant que j'ai fait quelques recherches supplémentaires, il semble que j'avais seulement besoin de 'vnd.youtube:VIDEO_ID' au lieu de deux barres obliques après les deux points (':' vs. '://') :

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

J'ai essayé la plupart des suggestions faites ici et elles n'ont pas vraiment fonctionné, toutes les méthodes supposées "directes" soulevant des exceptions. Je suppose qu'avec ma méthode, si l'application YouTube n'est PAS installée, le système d'exploitation a une position de repli par défaut autre que le plantage de l'application. En théorie, l'application n'est utilisée que sur les appareils sur lesquels l'application YouTube est installée, donc cela ne devrait pas poser de problème.

0 votes

Bonjour, Est-il possible de lire les vidéos youtube dans l'application au lieu de les lire dans Webview ?

0 votes

@Scorpion Il existe une API youtube, avec cette possibilité.

1 votes

Cela fonctionne très bien ! Mais il vous manque une parenthèse droite sur la première ligne.

21voto

Soubhab Pathak Points 309

Utilisez mon code ... Je suis capable de lire une vidéo youtube en utilisant ce code ... vous devez juste fournir l'identifiant de la vidéo youtube dans la variable "videoId" ....

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

3 votes

Cela lance directement l'application YouTube, en contournant le menu de sélection dans lequel vous pouvez choisir entre chrome et YouTube sur JellyBean.

2 votes

@r1k0 Oui .... Ce code lancera directement l'application Youtube par défaut pour lire la vidéo Youtube dans tous les types d'OS Android (pas seulement dans JellyBean).

1 votes

Si vous avez plus d'une application de lecture de YouTube (par exemple Firetube), vous devrez quand même choisir. Je dis juste ça pour que ce soit clair.

12voto

Sana Points 3743
Intent videoClient = new Intent(Intent.ACTION_VIEW);
videoClient.setData(Uri.parse("http://m.youtube.com/watch?v="+videoId));
startActivityForResult(videoClient, 1234);

videoId est l'identifiant vidéo de la vidéo youtube qui doit être lue. Ce code fonctionne bien sur Jalon de Motorola .

Mais ce que nous pouvons faire, c'est vérifier quelle activité est chargée lorsque vous démarrez l'application Youtube et substituer en conséquence le packageName et le className.

0 votes

J'obtiens l'erreur suivante. ERROR/AndroidRuntime(1519): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.google.android.youtube/com.google.android.youtube.Playe‌​rActivity}; have you declared this activity in your AndroidManifest.xml? Veuillez résoudre ce problème.

0 votes

Quel est votre appareil ? Ce nom d'activité n'est spécifique qu'au Motorola Milestone, mais si vous voulez voir le nom de l'activité youtube, branchez votre appareil en mode débogage USB et regardez le LogCat lorsque vous cliquez sur l'application Youtube. Vous devriez obtenir le nom du paquet et le nom de l'activité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X