एंड्रॉइड यूट्यूब ऐप प्ले वीडियो इंटेंट


148

मैंने एक ऐप बनाया है जहाँ आप Android के लिए YouTube वीडियो डाउनलोड कर सकते हैं। अब, मैं यह चाहता हूं ताकि यदि आप YouTube मूल एप्लिकेशन में कोई वीडियो चलाएं तो आप इसे भी डाउनलोड कर सकें। ऐसा करने के लिए, मुझे YouTube ऐप को चलाने के लिए YouTube मूल ऐप के इरादे को जानना होगा।
यदि मैं अपने एमुलेटर पर YouTube प्रोग्राम करता, तो मैं यह आसानी से कर सकता था, इसलिए मेरा पहला प्रश्न यह है:
1. क्या मैं अपने एमुलेटर के लिए YouTube ऐप डाउनलोड कर सकता हूं, या ...
2. उपयोगकर्ता द्वारा किसी वीडियो का चयन करने पर क्या अभिप्राय है? प्लेबैक के लिए।


हे, मैं भी एक यूट्यूब वीडियो डाउनलोडर ऐप बनाने की कोशिश कर रहा हूं। तो, मैं यह जानना चाहता हूं कि मुझे उसके लिए कोई एपी कुंजी प्राप्त करनी है या बस मैं अपने ऐप में वेबव्यू का उपयोग कर सकता हूं ?? @ASP
जयदीप कलकानी

जवाबों:


263

और इसके बारे में कैसे:

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

नोट: जब आप इस पद्धति का उपयोग कर रहे हैं तब सावधान रहें, YouTube स्पैम के कारण आपके चैनल को निलंबित कर सकता है, यह मेरे साथ दो बार हुआ


5
यदि यह उपलब्ध है, तो YouTube ऐप का समर्थन करने के लिए प्रॉप्स और यदि आवश्यक हो तो वेब ब्राउज़र पर वापस गिरना। इस सवाल पर आने वालों के लिए, यह उपयोग करने का उत्तर है।
ल्यूक सपन

कीवर्ड के माध्यम से खोज के लिए youtube ऐप कैसे लॉन्च करें जैसे। मैं चाहता हूं कि youtube ऐप लॉन्च किया जाए और फिर "
स्टेव

@RusheelJain जो एक नया मुद्दा होगा। मैं जो कुछ भी कर रहा हूं, वह "एंड्रॉइड यूट्यूब इरादे खोज पाठ" या ऐसा कुछ है।
वोगदेव

2
IMHO यह स्वीकृत उत्तर होना चाहिए। आपका बहुत बहुत धन्यवाद!
नाचो एल।

1
यह उत्तर है, लेकिन शायद आपको फ़ंक्शन घोषणा में स्थैतिक को हटा देना चाहिए
एम्परसैंडा

176

यह एक डिवाइस पर काम करेगा, लेकिन लेमी के जवाब के प्रति एमुलेटर नहीं ।

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

यह मेरे लिए विजेता था, अगर आपके पास youtube ऐप इंस्टॉल है तो यह पूछता है कि क्या आप इसके बजाय इसका उपयोग करना चाहते हैं।
ट्रिस्टन वार्नर-स्मिथ

इस कोड का उपयोग करें मुझे YouTube और ब्राउज़र के लिए इरादा चयनकर्ता मिलता है। इसे कैसे छिपाएं? मुझे बस सीधे youtube प्लेयर से लिंक करना होगा।
प्रवीण

@Praveen Chandrasekaran youtube ऐप उपलब्ध नहीं हो सकता है - यह आशय का उपयोग करने के लिए सबसे अच्छा है, और सिस्टम को काम करने दें जो इंस्टॉल किए गए एप्लिकेशन अनुरोध का समर्थन करते हैं।
कोफीम

3
आपको शुरू करने से पहले इंटेंट पर setClassName कॉल करने की आवश्यकता होगी, इस तरह: इरादे ।videoClient.setClassName ("com.google.android.youtube", "com.google.android.youtube.PlayerActivity"); वर्किंग कोड उदाहरण के लिए सना का जवाब देखें।
सममितिक

यह मेरे लिए काम नहीं करता है, एक वास्तविक डिवाइस पर youtube ऐप इंस्टॉल किया गया है। यह अभी भी वेब ब्राउज़र खोलता है। हालांकि नीचे BIBity द्वारा दृष्टिकोण काम करता है। या शायद सममित की टिप्पणी, कि कोशिश नहीं की है।
मथियास कॉनरैड्ट

33

यहां बताया गया है कि मैंने इस समस्या को कैसे हल किया:

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

अब जब मैंने कुछ और शोध किया है, तो ऐसा लग रहा है कि मुझे बृहदान्त्र के बाद दो स्लैशों के बजाय केवल 'vnd.youtube:VIDEO_ID' की आवश्यकता है (':' बनाम ': //'):

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

मैंने यहां अधिकांश सुझावों की कोशिश की और वे अपवादों को बढ़ाने वाले सभी "प्रत्यक्ष" तरीकों के साथ वास्तव में बहुत अच्छी तरह से काम नहीं करते थे। मुझे लगता है कि, मेरी विधि के साथ, यदि YouTube ऐप इंस्टॉल नहीं है, तो OS में ऐप को क्रैश करने के अलावा किसी अन्य चीज़ की डिफ़ॉल्ट फ़ालबैक स्थिति है। एप्लिकेशन सैद्धांतिक रूप से केवल उन पर YouTube ऐप वाले उपकरणों पर चल रहा है, इसलिए यह एक गैर-मुद्दा होना चाहिए।


नमस्कार, क्या वेब में खेलने के बजाय ऐप में यूट्यूब वीडियो चलाना संभव है?
बिच्छू

@Scorpion ऐसी संभावना के साथ, यूट्यूब एपीआई है।
मथेवेक

1
यह बहुत अच्छा काम करता है! लेकिन आपकी पहली पंक्ति में एक सही कोष्ठक गायब है।
कोस्टैस्क

18

मेरे कोड का उपयोग करें .. मैं इस कोड का उपयोग करके YouTube वीडियो चलाने में सक्षम हूं ... आपको बस "videoId" वीडियो में youtube वीडियो आईडी प्रदान करने की आवश्यकता है ...

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

3
यह सीधे YouTube एप्लिकेशन को शुरू करता है, चॉइस मेनू को दरकिनार करता है जिसमें आप जेलीबीन पर क्रोम और YouTube के बीच चयन कर सकते हैं।
r1k0

2
@ r1k0 हां .... यह कोड सभी प्रकार के एंड्रॉइड ओसेस (न केवल जेलीन में) में यूट्यूब वीडियो चलाने के लिए सीधे डिफ़ॉल्ट यूट्यूब ऐप शुरू करेगा।
सौभ पाठक पाठक

1
यदि आपके पास एक से अधिक youtube प्लेयर ऐप हैं (उदाहरण के लिए Firetube) तो यह अभी भी आपको चुनेगा। सिर्फ कह रहा है और स्पष्ट कर रहा हूं।
jj_

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

videoIdयूट्यूब वीडियो का वीडियो आईडी कहां है जिसे प्ले करना होगा। यह कोड मोटोरोला माइलस्टोन पर ठीक काम करता है ।

लेकिन मूल रूप से हम क्या कर सकते हैं यह जांचने के लिए कि आप Youtube ऐप शुरू करते समय किस गतिविधि को लोड करते हैं और तदनुसार पैकेजनाम और क्लासनेम का विकल्प देते हैं।


मुझे निम्नलिखित त्रुटि मिल रही है। 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? कृपया इसे हल करें।
विनोथकुमार अरपुत्रराज

आपका डिवाइस क्या है? यह गतिविधि नाम केवल एक मोटोरोला माइलस्टोन के लिए विशिष्ट है, लेकिन अगर आप अपने डिवाइस में यूट्यूब एक्टिविटी प्लग इन यूएसबी डिबगिंग मोड में गतिविधि का नाम देखना चाहते हैं और जब आप Youtube ऐप पर क्लिक करते हैं तो LogCat देखें। यह आपको गतिविधि के नाम के साथ पैकेज नाम देना चाहिए।
सना

7

Youtube (और मार्केट एप्लिकेशन) का उपयोग केवल विशेष रोम के साथ किया जाना चाहिए, जिसे Google ने G1 और G2 के लिए जारी किया है। तो आप उन्हें एक ओपन-सोर्स-रॉम में नहीं चला सकते हैं, जैसे कि एमुलेटर में उपयोग किया जाता है, दुर्भाग्य से। ठीक है, शायद आप कर सकते हैं, लेकिन आधिकारिक तौर पर समर्थित तरीके से नहीं।


क्या आप असमर्थित तरीके से जानते हैं?
इसहाक वालेर

नहीं, माफ करिए। बस संभावना को खारिज नहीं करना चाहता था।
लेम्मी

6

EDIT: नीचे दिए गए कार्यान्वयन से कम से कम कुछ एचटीसी उपकरणों (वे दुर्घटनाग्रस्त) पर समस्या साबित हुए। उस कारण से मैं सेटक्लस नाम का उपयोग नहीं करता हूं और कार्रवाई चयनकर्ता मेनू के साथ रहना चाहता हूं। मैं अपने पुराने कार्यान्वयन का उपयोग करते हुए दृढ़ता से हतोत्साहित करता हूं।

निम्नलिखित पुराने कार्यान्वयन है:

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

जहां उपयोगिता मेरे अपने व्यक्तिगत उपयोगिता वर्ग के साथ निम्नलिखित मेथोड है:

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

पहले मैं जांचता हूं कि क्या यूट्यूब स्थापित है, अगर यह स्थापित है, तो मैं एंड्रॉइड को बताता हूं कि मैं किस पैकेज को अपना इरादा खोलना पसंद करता हूं।


उपयोगिता क्या है? मैं इसे उपलब्ध आयात के रूप में नहीं देखता।
इगोरगानापोलस्की

EDIT के लिए +1। एक स्पष्ट वर्ग नाम का उपयोग निश्चित रूप से अविश्वसनीय है।
गिआलियो पियानकैसेली

5

मिल गया:

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

बहुत बढ़िया! तो क्या आपने इसके लिए सिर्फ एक ब्रॉडकास्ट रिसीवर बनाया?
दान

4

पुराने प्रश्न का उत्तर देते हुए, बस आप लोगों को सूचित करना है कि पैकेज बदल गया है, अपडेट का समर्थन करता है

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

यह बहुत अच्छी तरह से काम करता है, लेकिन जब आप मान्य YouTube URL के साथ ACTION_VIEW के साथ सामान्य इरादे को कॉल करते हैं, तो गतिविधि चयनकर्ता वैसे भी हो जाता है।


3

एक अलग ऐप पर वीडियो चलाने का सबसे सुरक्षित तरीका पहले पैकेज को हल करने की कोशिश है, दूसरे शब्दों में, जांचें कि ऐप डिवाइस पर स्थापित है। इसलिए अगर आप youtube पर एक वीडियो चलाना चाहते हैं तो आप कुछ इस तरह से काम करेंगे:

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


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

1

तुम भी बस हड़पने कर सकते हैं 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;
}

मेरे ऐप में ठीक काम किया।


याद रखें कि alwasy - Google Webview के अंदर कभी भी youtube वीडियो चलाने की अनुमति नहीं देता है। क्योंकि वे Android ऐप पर Youtube वीडियो चलाने के लिए Youtube API प्रदान करते हैं। यदि आप वेबव्यू के अंदर Youtube वीडियो चलाएंगे, तो Google Playstore से आपके एप्लिकेशन को हटा देगा।
संतोष देवनाथ

1

इसे इस्तेमाल करे:

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

    }
  }
}

0

यह काम करेगा यदि youtube ऐप इंस्टॉल किया गया है। यदि नहीं, तो एक चयनकर्ता अन्य एप्लिकेशन का चयन करने के लिए दिखाएगा:

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

इसे इस्तेमाल करे,

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

यह फ़ंक्शन मेरे लिए ठीक काम करता है ... फ़ंक्शन में बस url स्ट्रिंग पास करें:

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

यदि YouTube ऐप इंस्टॉल है, तो आप वीडियो चलाने के लिए Youtube Android खिलाड़ी API का उपयोग कर सकते हैं, अन्यथा उपयोगकर्ता को उपलब्ध वेब ब्राउज़र से चुनने के लिए संकेत दें।

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);
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.