Вызов приложения YouTube с помощью ACTION_VIEW намерения - PullRequest
2 голосов
/ 05 июня 2010

Я написал небольшое приложение для анализа RSS-каналов с YouTube и запуска видео, выбранных пользователем. Для воспроизведения видео я использую намерение:

Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(videoAddress);

Для вызова приложения YouTube, если оно установлено на устройстве.

Проблема, с которой я столкнулся, состоит в том, что из множества видео, которые я использую в своем приложении, около 90% из них отображают сообщение об ошибке «Не удается воспроизвести видео»: «Извините, это видео не может быть воспроизведено». Некоторые из них отлично работают из моего приложения. Видео, которое не работает, будет хорошо воспроизводиться в приложении YouTube, если поиск и запуск полностью из приложения YouTube.

Кто-нибудь видел такое поведение, или у кого-нибудь есть идеи для того, чтобы что-то попробовать? Очевидно, что приложение YouTube запускает видео несколько иным образом, чем это делает запрос Intent, но я понятия не имею, как добраться до сути.

Ответы [ 5 ]

1 голос
/ 27 февраля 2012

Самый надежный способ доступа к YouTube из приложения, который я нашел, - это использование мобильного сайта, попробуйте вместо этого (например, для поиска):

String videoUrl = "http://m.youtube.com/#/results?q=ciaconna+bach";

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(videoUrl)));

Это решило сообщение об ошибке «Невозможно воспроизвести видео», которое я получал.

1 голос
/ 02 сентября 2011
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(YOUTUBE_URL))); 

Приведенная выше строка кода работает для моего приложения.

Что он в основном делает, так это позволяет Android обрабатывать startActivity с помощью доступного установленного программного обеспечения на устройстве. Android, в свою очередь, открывает IntentChooser и позволяет пользователю решать, какое подходящее программное обеспечение использовать в этом случае, браузер и приложение Youtube для открытия видео.

Попробуйте и позвольте мне знать, работает ли он у вас или у вас есть другие проблемы.

1 голос
/ 17 марта 2011

У меня та же проблема. Вы уверены, что все видео воспроизводятся правильно из приложения YouTube? В моем случае на старом G1 видео, которые я не могу воспроизвести из моего приложения, не будет воспроизводиться, даже если поиск выполняется в приложении YouTube. Я думаю, что в некоторых случаях кодирование видео не поддерживается, и / или сочетание медленного процессора и медленной сети делает видео не воспроизводимым. Я читал о людях, которые просто обновляются много раз, пока видео не начнет воспроизводиться ... Я думаю, что в их заботе это была проблема с сетью / буферизацией. Больше обсуждения здесь: http://www.google.com.tw/support/forum/p/android/thread?tid=3a62cdf7188384af&hl=en

По этой причине мое приложение (похожее на ваше) получило много постельных комментариев. Я переиздал его только для Android> = 2.1 и теперь у меня меньше плохих отзывов.

0 голосов
/ 17 сентября 2011

У меня такая же проблема только с HTC Hero 2.1. Вы можете принудительно запустить флэш-плеер htc вместо приложения Youtube. С приложением flash player у меня не было никаких проблем:

Uri uri = Uri.parse("vnd.youtube:" + videoUrl);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);

String availableFlashPlayer = availableFlashPlayer();

if (availableFlashPlayer != null) {
    // launch the intent with the available flash player
    intent.setPackage(availableFlashPlayer);
}
startActivity(intent);

Метод availableFlashPlayer:

public String availableFlashPlayer() {

    String availableFlashPlayer = null;
    String FLASH_PLAYER = "com.htc.flash";
    PackageManager pm = getPackageManager();
    try {
        ApplicationInfo ai = pm
                .getApplicationInfo(FLASH_PLAYER, 0);
        if (ai != null) {
            availableFlashPlayer = FLASH_PLAYER;
        }
    } catch (Exception e) {
        Log.e(TAG, e.getMessage(), e);
    }       
    return availableFlashPlayer;
}

Вы также можете проверить Adobe Flash Player:

String FLASH_PLAYER = "com.adobe.flashplayer";

Кроме того, вы можете принудительно запустить браузер Android следующим образом:

Uri uri = Uri.parse(videoUrl);
String packageName = "com.android.browser"; 
String className = "com.android.browser.BrowserActivity"; 
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.setClassName(packageName, className);
startActivity(intent);
0 голосов
/ 27 мая 2011

Я использую этот код:

String vid= Uri.parse(urlVideo).getQueryParameter("v");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:" + vid)); 
try{
    startActivity(intent);
}
catch (ActivityNotFoundException ex){
    Log.e(TAG, "Couldn't find activity to view this video");
}

Может быть, работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...