Ứng dụng YouTube dành cho Android Phát Video Intent


113

Tôi đã tạo một ứng dụng mà bạn có thể tải xuống video trên YouTube dành cho Android. Bây giờ, tôi muốn nó để nếu bạn phát video trong ứng dụng gốc của YouTube, bạn cũng có thể tải xuống video đó. Để thực hiện việc này, tôi cần biết Mục đích mà ứng dụng gốc của YouTube đặt ra để phát ứng dụng YouTube.
Tôi có thể thực hiện điều này một cách dễ dàng nếu tôi có chương trình YouTube trên trình giả lập của mình, vì vậy câu hỏi đầu tiên của tôi là:
1. Tôi có thể tải ứng dụng YouTube cho trình mô phỏng của mình hay không?
2. Mục đích được sử dụng là gì khi người dùng chọn một video để phát lại.

  0

này có thể giúp quá http://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ 10 apr. 172017-04-10 05:31:31

7

Ứng dụng Youtube (và ứng dụng Market) chỉ được sử dụng với các ROM đặc biệt mà Google đã phát hành cho G1 và G2. Vì vậy, bạn không thể chạy chúng trong một OpenSource-ROM, giống như một cái được sử dụng trong Emulator, thật không may. Vâng, có thể bạn có thể, nhưng không theo cách được hỗ trợ chính thức.

  0

Bạn có biết cách không được hỗ trợ? 01 mar. 092009-03-01 07:03:45

  0

Xin lỗi, không. Chỉ không muốn loại trừ khả năng. 01 mar. 092009-03-01 16:12:15


5

Tìm thấy nó:

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

Tuyệt vời! Vì vậy, bạn đã chỉ cần tạo một máy thu phát sóng cho điều này? 26 sep. 172017-09-26 15:04:25


162

này sẽ làm việc trên một thiết bị nhưng không emulator mỗi Lemmy's answer.

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

Đây là người chiến thắng đối với tôi, nếu bạn đã cài đặt ứng dụng youtube, ứng dụng sẽ hỏi bạn có muốn sử dụng thay vào đó không. 23 mar. 102010-03-23 16:37:52

  0

sử dụng mã này tôi có được trình chọn ý định cho youtube và trình duyệt. làm thế nào để ẩn nó? tôi chỉ cần liên kết trực tiếp tới trình phát youtube. 21 may. 102010-05-21 14:13:08

  0

@Praveen Chandrasekaran ứng dụng youtube có thể không khả dụng - cách tốt nhất là sử dụng Intent và để hệ thống phát hành ứng dụng đã cài đặt nào hỗ trợ yêu cầu. 23 sep. 102010-09-23 12:27:53

+3

Bạn sẽ cần gọi setClassName trên Intent trước khi gọi startActivity, như sau: intent.videoClient.setClassName ("com.google.android.youtube", "com.google.android.youtube.PlayerActivity"); Xem câu trả lời của Sana về ví dụ về mã hoạt động. 28 jan. 112011-01-28 15:50:02

  0

Tính năng này không hoạt động đối với tôi, trên thiết bị thực có cài đặt ứng dụng youtube. Nó vẫn mở trình duyệt web. Cách tiếp cận của Bibbity dưới đây hoạt động. Hoặc có lẽ là bình luận của Symmetric, chưa thử điều đó. 11 nov. 112011-11-11 08:10:14

  0

+1 đẹp .. và cách đặt trình phát youtube làm trình phát mặc định ... 09 feb. 122012-02-09 10:01:49

  0

Điều này không hiệu quả với tôi trên thiết bị thực. Nói đơn giản là nó không thể phát video. Tôi đã cài đặt YouTube. 18 mar. 122012-03-18 23:05:30

  0

trong khi sử dụng mã này tôi có thể chơi video, nhưng sau khi tôi đã chọn trình duyệt của tôi tải trang web youtube của nó và tôi cần phải bấm, có cách nào để tránh bước này 25 jul. 132013-07-25 09:02:27

  0

mhhh. cũng vậy nhưng khác nhau. ngoại trừ bạn có một lớp lót;) nhưng điều này cũng hoạt động. 10 jun. 142014-06-10 14:49:37

  0

http://stackoverflow.com/a/12439378/578309 dài hơn nhưng an toàn hơn, giải pháp này ngắn hơn nhưng có thể không hoạt động trên một số thiết bị. 10 feb. 172017-02-10 11:33:33

  0

Bạn cũng có thể thử API Trình phát Youtube quá http://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ 07 apr. 172017-04-07 13:40:39


1

Bạn cũng có thể chỉ cần lấy 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; 
} 

Làm việc tốt trong ứng dụng của tôi.


0

Hãy thử điều này,

 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

Điều này không hiệu quả đối với tôi. 16 nov. 102010-11-16 23:49:34

  0

Điều này cũng không hiệu quả đối với tôi. Có bất kỳ requiremnt của flash player trong giả lập. 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); 

nơi videoid là id video của video youtube mà đã được đóng. Mã này hoạt động tốt trên Motorola Milestone. Tuy nhiên, về cơ bản những gì chúng tôi có thể làm là kiểm tra xem hoạt động nào được tải khi bạn khởi động ứng dụng Youtube và thay thế cho packageName và className đó một cách tương ứng.

  0

Tôi nhận được lỗi sau. 'ERROR/AndroidRuntime (1519): Gây ra bởi: android.content.ActivityNotFoundException: Không thể tìm thấy lớp hoạt động rõ ràng {com.google.android.youtube/com.google.android.youtube.PlayerActivity}; bạn đã khai báo hoạt động này trong tệp AndroidManifest.xml của mình chưa? ' Vui lòng giải quyết vấn đề này. 14 jun. 112011-06-14 14:06:37

  0

Thiết bị của bạn là gì? Tên hoạt động này chỉ dành riêng cho một mốc Motorola, nhưng nếu bạn muốn xem tên hoạt động cho phích cắm hoạt động trên youtube trong thiết bị của bạn trong chế độ gỡ lỗi USB và xem LogCat khi bạn nhấp vào Ứng dụng Youtube. Nó sẽ cung cấp cho bạn tên gói ẩn danh với tên hoạt động. 15 jun. 112011-06-15 02:00:53


1

Hãy thử điều này:

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

Trả lời cho câu hỏi cũ, chỉ để thông báo cho bạn rằng gói đã thay đổi, heres cập nhật

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

này hoạt động rất tốt, nhưng khi bạn gọi Ý định bình thường với ACTION_VIEW với người dùng URL youtube hợp lệ, hãy chọn bộ chọn Hoạt động.


26

Đây là cách tôi giải quyết vấn đề này:

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

Bây giờ mà tôi đã thực hiện một số nghiên cứu nhiều hơn, có vẻ như tôi chỉ cần 'vnd.youtube:VIDEO_ID' thay vì hai dấu gạch chéo sau dấu hai chấm (' :' vs ': //'):

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

tôi đã cố gắng hầu hết các gợi ý ở đây và họ không thực sự làm việc rất tốt với tất cả các phương pháp 'trực tiếp' phải nâng cao ngoại lệ. Tôi sẽ giả định rằng, với phương pháp của tôi, nếu ứng dụng YouTube KHÔNG được cài đặt, hệ điều hành có vị trí dự phòng mặc định của một cái gì đó khác ngoài việc đâm ứng dụng.Tuy nhiên, ứng dụng về mặt lý thuyết chỉ hoạt động trên thiết bị có ứng dụng YouTube trên thiết bị, vì vậy đây không phải là vấn đề.

  0

Điều này làm việc cho tôi :) 01 nov. 112011-11-01 13:35:39

  0

Xin chào, Có thể phát video youtube trong ứng dụng thay vì phát trong Webview không? 08 oct. 122012-10-08 06:07:31

  0

@Scorpion Có API youtube, với khả năng như vậy. 31 may. 132013-05-31 19:13:53

  0

Nó hoạt động tuyệt vời! Nhưng bạn đang thiếu một dấu ngoặc đơn đúng trên dòng đầu tiên. 17 jan. 162016-01-17 13:58:43


18

Sử dụng mã của tôi .. Tôi có thể chơi youtube video sử dụng mã này ... bạn chỉ cần cung cấp Id video youtube trong "videoid" biến ....

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

Thao tác này bắt đầu trực tiếp ứng dụng YouTube, bỏ qua menu chọn trong đó bạn có thể chọn giữa chrome và YouTube trên Jellybean. 29 aug. 122012-08-29 08:16:57

+2

@ r1k0 Có .... Mã này sẽ trực tiếp khởi động ứng dụng Youtube mặc định để phát video youtube trong tất cả các loại android oses (không chỉ trong Jellybean). 29 aug. 122012-08-29 14:00:50

+1

Nếu bạn có nhiều ứng dụng trình phát youtube (ví dụ Firetube), ứng dụng này vẫn sẽ giúp bạn chọn. Chỉ cần nói và làm cho nó rõ ràng. 12 apr. 162016-04-12 03:56:23


5

EDIT: dưới đây thực hiện chứng minh có vấn đề về ít nhất một số thiết bị HTC (họ bị rơi). Vì lý do đó, tôi không sử dụng setclassname và gắn bó với menu cho phép hành động. Tôi mạnh mẽ không khuyến khích sử dụng triển khai cũ của mình.

Tiếp theo là việc thực hiện cũ:

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

đâu Utility là lớp tiện ích cá nhân của riêng tôi với tole sau:

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

Trước tiên tôi kiểm tra xem youtube được cài đặt, nếu nó được cài đặt , Tôi cho android biết gói nào tôi muốn mở ý định của mình.

  0

Tiện ích là gì? Tôi không nhìn thấy nó như là một nhập khẩu có sẵn. 03 apr. 122012-04-03 03:49:54

  0

@IgorG. Cảm ơn bạn đã chỉ ra, câu trả lời được cập nhật. 03 apr. 122012-04-03 07:42:57

  0

+1 cho EDIT. Sử dụng tên lớp rõ ràng chắc chắn không đáng tin cậy. 21 jun. 122012-06-21 08:46:51


191

Và làm thế nào về điều này:

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

Đây phải là câu trả lời bình chọn cao nhất. 10 jun. 142014-06-10 18:03:27

+3

Đạo cụ hỗ trợ ứng dụng YouTube nếu có sẵn và quay lại trình duyệt web nếu cần. Đối với những người đến câu hỏi này, đây là câu trả lời để sử dụng. 30 may. 152015-05-30 22:04:05

  0

Cách khởi chạy ứng dụng youtube cho tìm kiếm thông qua từ khóa ví dụ: tôi muốn ứng dụng youtube được khởi chạy và sau đó tìm kiếm "steve jobs" 13 sep. 152015-09-13 09:20:42

  0

@RusheelJain đó sẽ là một vấn đề mới. Những gì tôi muốn làm là tìm kiếm "văn bản tìm kiếm ý định trên youtube android" hoặc nội dung tương tự. 01 oct. 152015-10-01 09:23:02

+1

IMHO này phải là câu trả lời được chấp nhận. Cảm ơn rất nhiều! 21 nov. 152015-11-21 14:31:07

  0

Tại sao đây không phải là câu trả lời được chấp nhận? 23 jul. 162016-07-23 23:26:58

  0

'Intent appIntent = new Intent (Intent.ACTION_VIEW, Uri.parse (" vnd.youtube: "+ id)); 'Trong dòng này xóa' vnd.youtube' làm việc cho tôi, vì nó đã thêm URL phụ của youtube.com vào url 'id'. 13 oct. 162016-10-13 13:17:26

+1

Đây là câu trả lời nhưng có lẽ bạn nên loại bỏ tĩnh trong khai báo hàm 20 may. 172017-05-20 12:51:42

  0

đây là những gì tôi cần! 25 sep. 172017-09-25 10:44:16


2

Youtube bây giờ có một api người chơi, Bạn nên cố gắng đó.

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

Cách an toàn nhất để chạy video trên một ứng dụng khác nhau là do đầu tiên cố gắng giải quyết các gói, nói cách khác, kiểm tra xem các ứng dụng được cài đặt trên thiết bị. Vì vậy, nếu bạn muốn chạy một video trên youtube, bạn sẽ làm điều gì đó như thế này:

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

Điều này sẽ hoạt động nếu ứng dụng youtube được cài đặt. Nếu không, một tính năng chọn sẽ hiển thị để chọn ứng dụng khác:

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

Chức năng này làm việc tốt cho tôi ... chỉ cần vượt qua chuỗi url trong chức năng:

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

Bạn có thể sử dụng máy nghe nhạc Youtube Android API để phát video nếu ứng dụng Youtube được cài đặt, nếu không, chỉ cần nhắc người dùng chọn từ các trình duyệt web có sẵn.

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