Aplicación de Android para Android Play Video Intent


113

He creado una aplicación donde puedes descargar videos de YouTube para Android. Ahora, lo quiero para que, si reproduces un video en la aplicación nativa de YouTube, también puedas descargarlo. Para hacer esto, necesito saber el propósito que tiene la aplicación nativa de YouTube para reproducir la aplicación de YouTube.
que podía hacer esto easially si tuviera el programa de YouTube en mi emulador, así que mi primera pregunta es:
1. ¿Puedo descargar la aplicación YouTube para mi emulador, o ...
2. ¿Cuál es la intención utilizado cuando el usuario selecciona un video para la reproducción.

  0

Esto podría ayudar también http://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ 10 abr. 172017-04-10 05:31:31

7

Se supone que la aplicación de Youtube (y Market) se debe usar con ROM especiales, que Google lanzó para G1 y G2. Por lo tanto, no puede ejecutarlos en una ROM OpenSource, como la que se usa en el Emulador, desafortunadamente. Bueno, tal vez puedas, pero no de una manera oficialmente compatible.

  0

¿Sabe usted la forma no soportada? 01 mar. 092009-03-01 07:03:45

  0

Lo siento, no. Simplemente no quería descartar la posibilidad. 01 mar. 092009-03-01 16:12:15


5

encontrado que es:

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

¡Impresionante! Entonces, ¿acabas de crear un receptor de transmisión para esto? 26 sep. 172017-09-26 15:04:25


162

Esto funcionará en un dispositivo pero no el emulador por Lemmy's answer.

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

Este fue el ganador para mí, si tiene la aplicación de YouTube instalada, le preguntará si desea usarla. 23 mar. 102010-03-23 16:37:52

  0

use este código, obtengo el selector de intención para youtube y navegador. cómo ocultarlo? solo necesito vincular directamente al reproductor de youtube. 21 may. 102010-05-21 14:13:08

  0

@Praveen Chandrasekaran es posible que la aplicación de youtube no esté disponible: lo mejor es usar Intent y dejar que el sistema determine qué aplicaciones instaladas admiten la solicitud. 23 sep. 102010-09-23 12:27:53

+3

Deberá llamar a setClassName en el Intent antes de llamar a startActivity, como este: intent.videoClient.setClassName ("com.google.android.youtube", "com.google.android.youtube.PlayerActivity"); Consulte la respuesta de Sana para obtener un ejemplo de código de trabajo. 28 ene. 112011-01-28 15:50:02

  0

Esto no funciona para mí, en un dispositivo real con la aplicación de youtube instalada. Todavía abre el navegador web. El enfoque de Bibbity a continuación funciona bien. O tal vez el comentario de Symmetric, no lo haya intentado. 11 nov. 112011-11-11 08:10:14

  0

+1 agradable ... y cómo configurar el reproductor de youtube como reproductor predeterminado ... 09 feb. 122012-02-09 10:01:49

  0

Esto no funciona para nada en un dispositivo real. Simplemente dice que no puede reproducir el video. Tengo YouTube instalado. 18 mar. 122012-03-18 23:05:30

  0

durante el uso de este código, puedo reproducir video, pero después de que seleccioné mi navegador para cargar la página web de youtube y necesito hacer clic, ¿hay alguna manera de evitar este paso 25 jul. 132013-07-25 09:02:27

  0

mhhh? Igual pero diferente. excepto que tienes un trazador de líneas único;) pero esto también funciona. 10 jun. 142014-06-10 14:49:37

  0

http://stackoverflow.com/a/12439378/578309 es más larga pero más segura, esta solución es más corta pero podría no funcionar en algunos dispositivos. 10 feb. 172017-02-10 11:33:33

  0

También puedes probar la API de Youtube Player también http://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ 07 abr. 172017-04-07 13:40:39


1

Usted también puede simplemente agarrar el 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; 
} 

funcionó bien en mi aplicación.


0

Prueba de esto,

 WebView webview = new WebView(this); 

     String htmlString = "<html> <body> <embed src=\"youtube link\"; type=application/x-shockwave-flash width="+widthOfDevice+" height="+heightOfDevice+"> </embed> </body> </html>"; 

     webview.loadData(htmlString ,"text/html", "UTF-8"); 
  0

Esto no funciona para mí. 16 nov. 102010-11-16 23:49:34

  0

Esto tampoco funcionó para mí. ¿Hay algún requerimiento de flash player en el emulador? 16 nov. 112011-11-16 06:15:11


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

donde videoId es la identificación de video del video de youtube que tiene que ser jugado. Este código funciona bien en Motorola Milestone.

Pero básicamente lo que podemos hacer es verificar qué actividad se carga cuando inicia la aplicación de Youtube y en consecuencia sustituir el nombre del paquete y el nombre de clase.

  0

Recibo el siguiente error. 'ERROR/Android Runtime (1519): causada por: android.content.ActivityNotFoundException: No se pudo encontrar la clase de actividad explícita {com.google.android.youtube/com.google.android.youtube.PlayerActivity}; ¿ha declarado esta actividad en su AndroidManifest.xml? ' Resuelva esto amablemente. 14 jun. 112011-06-14 14:06:37

  0

¿Cuál es su dispositivo? Este nombre de actividad solo es específico de un Milestone de Motorola, pero si desea ver el nombre de la actividad de youtube, conecte su dispositivo en el modo de depuración de USB y vea el LogCat al hacer clic en la aplicación de Youtube. Debería darle el nombre del paquete alogn con el nombre de la actividad. 15 jun. 112011-06-15 02:00:53


1

Prueba esto:

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 

    } 
    } 
} 

4

En respuesta a la vieja pregunta, sólo para informar a ustedes que el paquete ha cambiado, aquí está la actualización

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

Esto funciona muy bien, pero cuando se llama Intención normales con ACTION_VIEW con usuario de URL de youtube válido se obtiene el selector de actividad de todos modos.


26

Así es como he resuelto este problema:

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

Ahora que he hecho un poco más investigación, parece que sólo necesitaba 'vnd.youtube:VIDEO_ID' en lugar de dos barras después de los dos puntos (' :' vs ': //'):

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

Probé la mayoría de las sugerencias aquí y que no funcionaba muy bien con todos los supuestos métodos 'directos' que producen excepciones. Asumiría que, con mi método, si la aplicación de YouTube NO está instalada, el sistema operativo tiene una posición de respaldo predeterminada de algo más que bloquear la aplicación.La aplicación teóricamente solo funciona en dispositivos con la aplicación de YouTube en ellos de todos modos, por lo que esto no debería ser un problema.

  0

Esto funcionó para mí :) 01 nov. 112011-11-01 13:35:39

  0

Hola, ¿es posible reproducir videos de YouTube en la aplicación en lugar de reproducirlo en Webview? 08 oct. 122012-10-08 06:07:31

  0

@Scorpion Hay API de youtube, con tal posibilidad. 31 may. 132013-05-31 19:13:53

  0

¡Funciona genial! Pero le falta un paréntesis derecho en la primera línea. 17 ene. 162016-01-17 13:58:43


18

se usa el código .. Soy capaz de reproducir vídeo de youtube con este código ... sólo tiene que proporcionar youtube video id en el "videoId" variables ....

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

Esto inicia directamente la aplicación de YouTube, sin pasar por el menú del selector en el que puede elegir entre Chrome y YouTube en JellyBean. 29 ago. 122012-08-29 08:16:57

+2

@ r1k0 Sí .... Este código iniciará directamente la aplicación de Youtube predeterminada para reproducir el video de youtube en todos los tipos de osos de Android (no solo en JellyBean). 29 ago. 122012-08-29 14:00:50

+1

Si tiene más de una aplicación de reproductor de YouTube (por ejemplo, Firetube), seguirá eligiendo. Solo digo y lo dejo en claro. 12 abr. 162016-04-12 03:56:23


5

EDIT: La a continuación, la implementación demostró tener problemas en al menos algunos dispositivos HTC (se bloquearon). Por esa razón, no uso setclassname y me apego al menú del selector de acciones. Desaconsejo fuertemente usar mi implementación anterior.

A continuación se presenta la implementación antigua:

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

donde la utilidad es mi propia clase de utilidad personal con siguiente méthode:

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

Primera puedo comprobar si se ha instalado youtube, si está instalado , Le digo a Android qué paquete prefiero para abrir mi intento.

  0

¿Qué es la utilidad? No lo veo como una importación disponible. 03 abr. 122012-04-03 03:49:54

  0

@IgorG. Gracias por señalarlo, respuesta actualizada. 03 abr. 122012-04-03 07:42:57

  0

+1 para el EDIT. Usar un nombre de clase explícito definitivamente no es confiable. 21 jun. 122012-06-21 08:46:51


191

Y ¿qué tal esto:

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

Esta debería ser la respuesta más votada. 10 jun. 142014-06-10 18:03:27

+3

Apoyos para admitir la aplicación de YouTube, si está disponible, y recurrir al navegador web si es necesario. Para aquellos que vienen a esta pregunta, esta es la respuesta para usar. 30 may. 152015-05-30 22:04:05

  0

Cómo iniciar la aplicación de youtube para buscar por palabra clave por ej. Quiero que se inicie la aplicación de youtube y luego en esa búsqueda de "Steve Jobs" 13 sep. 152015-09-13 09:20:42

  0

@RusheelJain eso sería un problema nuevo. Lo que haría es buscar "texto de búsqueda de intención de youtube de Android" o algo así. 01 oct. 152015-10-01 09:23:02

+1

En mi humilde opinión esto debería ser la respuesta aceptada. ¡Muchas gracias! 21 nov. 152015-11-21 14:31:07

  0

¿Por qué no es esta la respuesta aceptada? 23 jul. 162016-07-23 23:26:58

  0

'Intent appIntent = new Intent (Intent.ACTION_VIEW, Uri.parse (" vnd.youtube: "+ id)); 'En esta línea, la eliminación de' vnd.youtube' funcionó para mí, ya que agregaba una URL extra de youtube.com a la URL de 'id'. 13 oct. 162016-10-13 13:17:26

+1

Esta es la respuesta, pero tal vez debería eliminar estática en la declaración de función 20 may. 172017-05-20 12:51:42

  0

¡esto es lo que necesitaba! 25 sep. 172017-09-25 10:44:16


2

Youtube tiene ahora una API jugador, usted debe tratar de eso.

https://developers.google.com/youtube/android/player/


2
/** 
* 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

La forma más segura de ejecutar vídeos en una aplicación diferente es, en primer lugar tratar de resolver el paquete, es decir, comprobar que la aplicación está instalada en el dispositivo. Por lo tanto, si desea ejecutar un video en youtube, haría algo como esto:

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

0

Esto funcionará si la aplicación youtube está instalada. Si no, un selector se mostrará para seleccionar otra aplicación: excelente trabajo

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

0

Esta función para mí ... sólo tiene que pasar cadena de URL en función de:

void watch_video(String url) 
{ 
    Intent yt_play = new Intent(Intent.ACTION_VIEW, Uri.parse(url)) 
    Intent chooser = Intent.createChooser(yt_play , "Open With"); 

    if (yt_play .resolveActivity(getPackageManager()) != null) { 
        startActivity(chooser); 
       } 
} 

0

Usted puede utilizar el reproductor de YouTube para Android API para reproducir el video si la aplicación de Youtube está instalada; de lo contrario, solo solicite al usuario que elija entre los navegadores web disponibles.

if(YouTubeIntents.canResolvePlayVideoIntent(mContext)){ 
        mContext.startActivity(YouTubeIntents.createPlayVideoIntent(mContext, mVideoId)); 
       } 
       else { 
        Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=" + mVideoId)); 
        mContext.startActivity(webIntent); 
       }