Android aplicación de YouTube Juego de Video Intención

He creado una app donde podrás descargar vídeos de YouTube para android. Ahora, yo quiero así que si reproduce un vídeo en el YouTube nativo de la aplicación se puede descargar también. Para ello, necesito saber la Intención de que la aplicación nativa de YouTube pone en el orden de reproducción de la aplicación de YouTube.

Yo podría hacer esto easially si yo tuviera el YouTube programa en mi emulador, así que mi 1ª pregunta es:

1. Puedo descargar la aplicación de YouTube para mi emulador, o…

2. ¿Cuál es la intención utiliza cuando el usuario selecciona un vídeo para su reproducción.

  • hola, yo también estoy tratando de hacer un youtube video downloader app. Así que, quiero saber que tengo que conseguir alguna clave de la api de eso, o simplemente puedo usar webview en mi app?? @ASP
InformationsquelleAutor Isaac Waller | 2009-02-22

18 Kommentare

  1. 250

    Y cómo sobre 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);
        }
    } 

    Nota: tenga Cuidado cuando usted está usando este método, YouTube puede suspender su canal debido a spam, esto ocurrió dos veces conmigo

    • Accesorios para el apoyo a la aplicación de YouTube, si está disponible, y volver a caer en el navegador web si es necesario. Para los que vienen a esta pregunta, esta es la respuesta a usar.
    • Cómo lanzar la aplicación de youtube para la búsqueda a través de palabras clave, por ejemplo. quiero que la aplicación de youtube para ser lanzado y, a continuación, en la búsqueda para «steve jobs»
    • que sería un nuevo problema. Lo que yo haría es buscar «android youtube intención de búsqueda de texto» o algo así.
    • En mi humilde opinión, este debe ser aceptado respuesta. Muchas gracias!
    • Intent appIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:" + id)); En esta línea de extracción de vnd.youtube trabajado para mí , como lo fue anexando extra URL de youtube.com a id url.
    • Esta es la respuesta, pero quizás debería eliminar la estática en la declaración de la función

  2. 171

    Esto funcionará en un dispositivo pero no el emulador por La respuesta de Lemmy.

    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));
    • Este fue el ganador para mí, si usted tiene la aplicación de youtube instalada se le pregunta si desea utilizar en su lugar.
    • utilice este código me sale la intención selector de youtube y el navegador. cómo ocultarlo? sólo necesito enlazar directamente hasta el reproductor de youtube.
    • Chandrasekaran la aplicación de youtube pueden no estar disponibles -, es mejor utilizar la Intención, y dejar que el sistema de trabajo que las aplicaciones instaladas apoyo de la solicitud.
    • Tendrás que llamar a setClassName en la Intención antes de llamar a startActivity, como este: la intención.videoClient.setClassName(«com.google.android.youtube», «com.google.android.youtube.PlayerActivity»); Véase Sana respuesta para un trabajo código de ejemplo.
    • Esto no funciona para mí, en un dispositivo real con la aplicación de youtube instalada. Todavía abre el navegador web. El enfoque por Bibbity siguiente funciona bien. O tal vez Simétrica del comentario, no he probado eso.
    • Esto no funciona para mí en un dispositivo real. Simplemente dice que no puede reproducir el vídeo. Tengo YouTube instalado.
    • mientras que el uso de este código, soy capaz de reproducir vídeo,pero después de que me eligió a mi navegador de su carga de youtube de la página web y necesito haga clic en, ¿hay alguna manera de evitar este paso
    • mhhh. mismo pero diferente. excepto que usted tiene un forro 😉 pero esto también funciona.
    • stackoverflow.com/a/12439378/578309 es más larga pero más segura, esta solución más corta, pero puede que no funcione en algunos dispositivos.

  3. 33

    He aquí cómo 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 de investigación, en el que parece que sólo necesario » vnd.youtube:ID_VIDEO’ en lugar de dos barras después de los dos puntos (‘:’ vs ‘://’):

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

    He probado la mayoría de las sugerencias aquí y que realmente no funcionan muy bien con todos los de la supuesta «directa» de los métodos de crianza de excepciones. Quiero suponer que, con mi método, si la aplicación de YouTube NO está instalado, el sistema operativo tiene un defecto posición de retroceso de algo distinto de estrellarse la aplicación. La aplicación es teóricamente sólo va en los dispositivos con la aplicación de YouTube en ellos de todos modos, por lo que este debe ser un no-problema.

    • Hola, Es posible reproducir vídeos de youtube en la App en lugar de jugar en Webview?
    • Hay API de youtube, con tal posibilidad.
    • Funciona a la perfección! Pero su faltan un paréntesis de cierre en la primera línea.
  4. 18

    Usar mi código .. soy capaz de reproducir vídeo de youtube usando este código … solo necesita proporcionar vídeo de youtube id en el «videoId» de la variable ….

    String videoId = "Fee5vbFLYM4";
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:"+videoId)); 
    intent.putExtra("VIDEO_ID", videoId); 
    startActivity(intent); 
    • Este inicia directamente la aplicación YouTube, sin pasar por el menú del selector en la que puede elegir entre chrome y YouTube en JellyBean.
    • Sí …. Este código va a iniciar directamente el valor predeterminado de la aplicación Youtube para reproducir el vídeo de youtube en todos los tipos de sistemas operativos android(no sólo en JellyBean).
    • Si usted tiene más de un reproductor de youtube de la aplicación (por ejemplo Firetube) va a hacer que usted elija. Acaba de decir y lo que es claro.
  5. 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 el id del vídeo del vídeo de youtube que tiene que ser jugado. Este código funciona bien en Motorola Milestone.

    Pero básicamente lo que podemos hacer es comprobar que lo que se cargan al iniciar la aplicación de Youtube y, en consecuencia, sustituir el packageName y el nombre de la clase.

    • Me da el siguiente error. ERROR/AndroidRuntime(1519): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.google.android.youtube/com.google.android.youtube.PlayerActivity}; have you declared this activity in your AndroidManifest.xml? Amablemente resolver esto.
    • ¿Cuál es tu dispositivo? Esta actividad nombre sólo es específico para un Motorola Milestone, pero si quieres ver el nombre de la actividad para la actividad de youtube conecte su dispositivo en modo depuración USB y ver el LogCat cuando usted haga clic en la Aplicación de Youtube. Se debe dar el nombre del paquete junto con el nombre de la actividad.
  6. 7

    El Youtube (y el Mercado de aplicaciones) sólo deben utilizarse con especial Rom, que Google lanzó para el G1 y el G2. Así que no se pueden ejecutar en un OpenSource-ROM, como el que se utiliza en el Emulador, por desgracia. Bueno, tal vez usted puede, pero no en un soportado oficialmente manera.

    • ¿Sabe usted la no forma?
    • Lo sentimos, no hay. Simplemente no quiere descartar la posibilidad.
  7. 6

    EDIT: La siguiente aplicación demostrado tener problemas en al menos algunos de los dispositivos de HTC (que se estrelló). Por esa razón yo no uso setclassname y seguir con la acción selector de menú. Me desaconsejan el uso de mi viejo aplicación.

    Siguiente es la implementación viejo:

    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 utilidad de la clase con la siguiente methode:

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

    Primero miro si es que youtube está instalado, si está instalado, quiero decirle a android que paquete prefiero abrir mi intención.

    • ¿Cuál es la Utilidad? Yo no lo veo como una importación.
    • Gracias por señalarla, actualizado respuesta.
    • +1 para la EDICIÓN. El uso de un explícito nombre de la clase es sin duda poco fiables.
  8. 5

    Encontrado:

    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) }
    • Impresionante! Así que ¿usted acaba de crear un broadcast receiver para esto?
  9. 4

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

    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 normal Intención con ACTION_VIEW con validez URL de youtube, el usuario obtiene la Actividad selector de todos modos.

  10. 3

    La forma más segura para ejecutar vídeos en una aplicación distinta es primero tratando de resolver el paquete, en otras palabras, comprobar que la aplicación está instalada en el dispositivo. Así que si quieres realizar un video en youtube te gustaría hacer 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);
    }
  11. 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;
    }
  12. 1

    También se 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;
    }

    Trabajó muy bien en mi app.

    • Recuerde que siempre – Google nunca se permite la reproducción de vídeo de youtube en el interior de Webview. Porque proporcionan una API de Youtube para reproducir vídeo de Youtube en Android. Si va a reproducir vídeo de Youtube en el interior de la webview, a continuación, Google eliminará la aplicación de la Playstore.
  13. 1

    Intente 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
    
        }
      }
    }
  14. 0

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

    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 ) );
  15. 0

    Probar este,

    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");
    • Este es también no funcionó para mí. Es allí cualquier requiremnt de flash player en el emulador.
  16. 0

    Esta función funciona bien para mí…acaba de pasar la cadena de dirección 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);
                    }
    }
  17. 0

    Puede utilizar el Youtube Android player API para reproducir el vídeo de Youtube instalada la aplicación, de lo contrario sólo solicitará al usuario que elija a partir de la disposición de los navegadores web.

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

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea