Android приложение Play Video Намерение YouTube

голоса
121

Я создал приложение , где вы можете загрузить видео на YouTube для Android. Теперь, я хочу это так , что если вы играете в видео в родном приложении YouTube вы можете скачать его тоже. Для этого мне нужно знать Intent , что родное приложение YouTube тушит, чтобы играть в приложение YouTube.
Я мог бы сделать это easially , если у меня была программа YouTube на моем эмуляторе, поэтому мой первый вопрос:
1. Могу ли я загрузить приложение YouTube для моего эмулятора, или ...
2. Что такое намерение используется , когда пользователь выбирает видео для воспроизведения.

Задан 22/02/2009 в 03:37
источник пользователем
На других языках...                            


18 ответов

голоса
207

А как насчет этого:

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);
    }
} 
Ответил 15/09/2012 в 18:03
источник пользователем

голоса
165

Это будет работать на устройстве , но не эмулятор в ответ Лемми .

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));
Ответил 21/08/2009 в 03:28
источник пользователем

голоса
27

Вот как я решил эту проблему:

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 не установлен, ОС имеет место запасного по умолчанию что-то другое, чем сбой приложения. Приложение будет теоретически только на устройствах с приложением YouTube на них в любом случае, так что это должно быть не проблема.

Ответил 18/08/2011 в 23:45
источник пользователем

голоса
18

Используйте мой код .. Я могу играть Youtube видео с помощью этого кода ... Вам просто нужно предоставить ID видео YouTube в «VideoID» переменный ....

String videoId = "Fee5vbFLYM4";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:"+videoId)); 
intent.putExtra("VIDEO_ID", videoId); 
startActivity(intent); 
Ответил 07/09/2011 в 13:56
источник пользователем

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

где VideoID это идентификатор видео видео YouTube, который должен быть воспроизведен. Этот код прекрасно работает на Motorola Milestone.

Но в основном то, что мы можем сделать, это проверить, что активность загружается при запуске приложения Youtube и, соответственно, подменить PACKAGENAME и Classname.

Ответил 15/11/2010 в 06:00
источник пользователем

голоса
7

Youtube (и приложение Market), как предполагается, могут быть использованы только с помощью специальных дисков, которые Google выпустили для G1 и G2. Таким образом, вы не можете запустить их в OpenSource-ROM, подобный используемому в эмуляторе, к сожалению. Ну, может быть, вы можете, но не в официально поддерживаемый способ.

Ответил 01/03/2009 в 03:27
источник пользователем

голоса
5

EDIT: Ниже реализация оказалась проблемы по крайней мере, в некоторых устройствах HTC (они упали). По этой причине я не использую setclassname и придерживайтесь меню Действия Chooser. Я строго используя свою старую реализацию.

Ниже старая реализация:

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

Где Utility моя личная утилита класса со следующими 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;
}

Сначала я проверить, установлен ли на YouTube, если он установлен, я говорю андроид, какой пакет я предпочитаю, чтобы открыть свое намерение.

Ответил 21/02/2012 в 10:31
источник пользователем

голоса
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) }
Ответил 18/03/2009 в 20:41
источник пользователем

голоса
4

Отвечая на старый вопрос, только чтобы сообщить вам, ребята, что пакет изменились, Heres обновление

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

Это работает очень хорошо, но когда вы называете нормальную Intent с ACTION_VIEW с действительным пользователем URL YouTube получает селектор активности в любом случае.

Ответил 21/07/2011 в 19:45
источник пользователем

голоса
2

Самый безопасный способ запустить видео на другое приложение является первым пытается решить пакет, другими словами, убедитесь, что приложение установлено на устройстве. Так что если вы хотите, чтобы запустить видео на 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);
}
Ответил 17/02/2017 в 00:12
источник пользователем

голоса
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;
}
Ответил 04/10/2014 в 06:37
источник пользователем

голоса
2

Youtube теперь игрок апи, Вы должны попробовать это.

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

Ответил 10/02/2014 в 13:05
источник пользователем

голоса
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

    }
  }
}
Ответил 21/03/2011 в 10:36
источник пользователем

голоса
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;
}

Работал хорошо в моем приложении.

Ответил 09/11/2010 в 00:47
источник пользователем

голоса
0

Вы можете использовать плеер API Youtube Android для воспроизведения видео, если установлено приложение Youtube, в противном случае просто предложит пользователю выбрать один из доступных веб-браузеров.

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);
                }
Ответил 19/01/2018 в 14:35
источник пользователем

голоса
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);
                }
}
Ответил 13/11/2017 в 09:10
источник пользователем

голоса
0

Это будет работать, если установлено приложение YouTube. Если нет, то Chooser будет отображаться, чтобы выбрать другое приложение:

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 ) );
Ответил 06/11/2017 в 13:40
источник пользователем

голоса
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");
Ответил 09/11/2010 в 10:35
источник пользователем

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