Android aplikace YouTube Play Video Intent

hlasů
121

Vytvořil jsem aplikaci, kde si můžete stáhnout videa z YouTube pro Android. Teď, chci to tak, že pokud budete hrát video v nativním aplikace YouTube můžete si jej stáhnout taky. Jak to udělat, musím vědět, záměrem, že nativní aplikace YouTube vydá s cílem hrát aplikaci YouTube.
Mohl bych to udělat easially kdybych měl program YouTube na svém emulátoru, takže moje první otázka zní:
1. Mohu pro svůj emulátor stáhnout aplikaci YouTube, nebo ...
2. Jaký je záměr použít, pokud uživatel vybere video pro přehrávání.

Položena 22/02/2009 v 03:37
zdroj uživatelem
V jiných jazycích...                            


18 odpovědí

hlasů
207

A co třeba tohle:

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);
    }
} 
Odpovězeno 15/09/2012 v 18:03
zdroj uživatelem

hlasů
165

To bude pracovat na zařízení, ale ne v emulátoru na Lemmyho odpověď .

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));
Odpovězeno 21/08/2009 v 03:28
zdroj uživatelem

hlasů
27

Zde je návod, jak jsem vyřešil tento problém:

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

Teď, když jsem udělal nějaké další výzkum, vypadá to, že jsem jen potřeboval ‚vnd.youtube:VIDEO_ID‘ namísto dvou lomítek po dvojtečkou ( ‚:‘ vs. ‚: //‘):

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

Zkoušel jsem většinu z návrhů tady a oni se opravdu velmi dobře pracovat se všemi z údajných „přímé“ metody zvyšování výjimky. Předpokládal bych, že se svým způsobem, je-li aplikace YouTube není nainstalována, OS má výchozí pozici záložní něčeho jiného než shazovat aplikaci. Tato aplikace se děje teoreticky pouze v zařízeních s aplikací YouTube v nich tak jako tak, takže by to mělo být non-záležitost.

Odpovězeno 18/08/2011 v 23:45
zdroj uživatelem

hlasů
18

Používat svůj kód .. Jsem schopen přehrávat videa YouTube pomocí tohoto kódu ... stačí poskytnout ID videa na YouTube v „videoID“ proměnné ....

String videoId = "Fee5vbFLYM4";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:"+videoId)); 
intent.putExtra("VIDEO_ID", videoId); 
startActivity(intent); 
Odpovězeno 07/09/2011 v 13:56
zdroj uživatelem

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

kde videoID je video ID videa YouTube, které má být hrán. Tento kód funguje na Motorola Milestone.

Ale v podstatě to, co můžeme udělat, je zkontrolovat, jaké aktivity je načten při spuštění aplikace YouTube, a proto nahrazovat PackageName a ClassName.

Odpovězeno 15/11/2010 v 06:00
zdroj uživatelem

hlasů
7

Youtube (a aplikace Market) se předpokládá, že lze použít pouze se speciálními ROMy, které Google propuštěny pro G1 a G2. Takže nelze spustit je v OpenSource-ROM, jako byl použit v emulátoru, bohužel. No, možná je to možné, ale ne oficiálně podporované způsobem.

Odpovězeno 01/03/2009 v 03:27
zdroj uživatelem

hlasů
5

EDIT: Níže implementace se ukázala mít problémy týkající se alespoň některých zařízeních HTC (oni havaroval). Z tohoto důvodu jsem se nepoužívají setclassname a držet se v nabídce akční Výběr. I silně odradit pomocí mého starého provedení.

Následuje staré provedení:

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

Kde Utility je můj vlastní osobní užitek třída s tímto 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;
}

Nejdřív jsem si zkontrolovat, zda je nainstalována youtube, pokud je nainstalován, řeknu android, který balík raději otevřu záměr.

Odpovězeno 21/02/2012 v 10:31
zdroj uživatelem

hlasů
5

Našel jsem to:

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) }
Odpovězeno 18/03/2009 v 20:41
zdroj uživatelem

hlasů
4

Odpověď na starou otázku, jen proto, aby vás informovat lidi, že balíček se změnily, Heres aktualizace

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

To funguje velmi dobře, ale když zavoláte normální Intent s ACTION_VIEW s platným uživatelem YouTube URL dostane volič aktivity kdekoli.

Odpovězeno 21/07/2011 v 19:45
zdroj uživatelem

hlasů
2

Nejbezpečnější způsob, jak spustit videa na jiné aplikace, je tím, že nejprve se snaží vyřešit balíček, jinými slovy, zkontrolujte, zda je aplikace nainstalována na zařízení. Takže pokud chcete spustit video na youtube byste udělat něco takového:

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);
}
Odpovězeno 17/02/2017 v 00:12
zdroj uživatelem

hlasů
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;
}
Odpovězeno 04/10/2014 v 06:37
zdroj uživatelem

hlasů
2

Youtube má nyní api hráče, měli byste to zkusit.

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

Odpovězeno 10/02/2014 v 13:05
zdroj uživatelem

hlasů
1

Zkuste to:

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

    }
  }
}
Odpovězeno 21/03/2011 v 10:36
zdroj uživatelem

hlasů
1

Můžete také jen Vyjmout 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;
}

Fungovalo dobře v mé aplikaci.

Odpovězeno 09/11/2010 v 00:47
zdroj uživatelem

hlasů
0

Můžete použít API přehrávače YouTube pro Android přehrávání videa, pokud je nainstalována aplikace Youtube, jinak jen vyzve uživatele, aby si vybrat z dostupných webových prohlížečů.

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);
                }
Odpovězeno 19/01/2018 v 14:35
zdroj uživatelem

hlasů
0

Tato funkce funguje dobře pro mě ... prostě projít url řetězec ve funkci:

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);
                }
}
Odpovězeno 13/11/2017 v 09:10
zdroj uživatelem

hlasů
0

To bude fungovat, pokud nainstalována aplikace YouTube. Pokud tomu tak není, bude chooser ukáže zvolit jiné aplikace:

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 ) );
Odpovězeno 06/11/2017 v 13:40
zdroj uživatelem

hlasů
0

Zkuste to,

       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");
Odpovězeno 09/11/2010 v 10:35
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more