HTML5 YouTube перестало работать в Android - PullRequest
9 голосов
/ 16 сентября 2011

Каким-то образом видео HTML5 на YouTube перестало работать у меня около недели назад. Понятия не имею почему. Вот код, который работал на прошлой неделе (ну, не настоящий код, но самый маленький пример, который я мог сделать):

public class VideoTestActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        WebView webView = new WebView(this);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setPluginState(PluginState.OFF);
        webView.setWebChromeClient(new TestWebChromeClient());

        setContentView(webView);

        // Try with http://player.vimeo.com/video/24158845 and it works.
        webView.loadUrl("http://www.youtube.com/embed/e2UIg3Ddfp0");
    }

    private class TestWebChromeClient extends WebChromeClient {
        @Override
        public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) {
            super.onShowCustomView(view, callback);
            VideoTestActivity.this.setContentView(view);
        }
    }
}

Это не работает на моем телефоне или эмуляторе. Сумасшедшая часть в том, что Vimeo по-прежнему прекрасно работает. Я попытался настроить пользовательский агент iPhone, но это не сработало, и у меня закончились идеи. Похоже, что Youtube что-то изменил ...

1 Ответ

2 голосов
/ 22 сентября 2011

Youtube, возможно, что-то изменило на их встроенной странице, и, скорее всего, это вызывает проблемы внутри WebView, и поэтому он больше не работает.

Также вы тестируете свое приложение на том же устройстве, что и раньше?

Я не думаю, что это хорошее решение использовать это решение, поскольку вы не можете полагаться на то, что контент, который вы отображаете сегодня с Youtube, и он работает, также будет таким же через несколько дней, и он будет все еще работает, как вы только что столкнулись. У меня были похожие проблемы с контентом videos и Youtube, он работал бы на одном устройстве, а на других - вообще не работал. Это также контент Flash, и многие устройства Android не имеют Flash и не смогут воспроизводить контент.

Решением было бы создать Intent для воспроизведения видео:

      Intent videoIntent=new Intent(Intent.ACTION_VIEW, 
                                     Uri.parse("http://www.youtube.com/my_url"));
      startActivity(videoIntent);

Но я бы порекомендовал кодировать видео для Android, как указано в Поддерживаемые форматы мультимедиа , и сохранять их на своем собственном сервере, если у вас есть такая возможность.

РЕДАКТИРОВАТЬ: Они определенно что-то изменили, так как там есть ошибка JS. Вы можете отслеживать их, используя WebChromeClient:

  mWebView.setWebChromeClient(new WebChromeClient(){
        @Override
        public void onConsoleMessage(String message, int lineNumber,
                String sourceID) {
            super.onConsoleMessage(message, lineNumber, sourceID);
            Log.i("VIDEO VIEW",message);
        }
 }

Это сообщение об ошибке, которое я получил:

TypeError: Result of expression 'a' [undefined] is not an object.line 78sourcehttp://www.youtube.com/embed/e2UIg3Ddfp0

Я не знаю, поможет ли это вам, позже я еще посмотрю и посмотрю, что я смогу найти.

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