Youtube видео в WebView не загружается - PullRequest
4 голосов
/ 12 декабря 2011

Я реализовал WebView в своей деятельности, для этого я дал разрешение

<uses-permission android:name="android.permission.INTERNET"/>

с этим кодом:

    WebView mWebView;
    mWebView = (WebView) findViewById(R.id.ueber_webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setPluginsEnabled(true);
    mWebView.loadUrl("file:///android_asset/MyTestPage.htm");

html страница загрузка * хорошо *, а также отображается видео с его рамкой и типичной кнопкой Youtube-Play вцентр видео.Но когда я нажимаю , видео не * загружается *.

Это htm-контент:

    <div id="playerFrame">
<iframe src="http://www.youtube.com/embed/MyURL" //have to hide the url, ends with something like "...j4Fs?rel=0"
frameborder="0" allowfullscreen id="playerPlaceHolder"></iframe>
</div>

Содержание css должно быть правильным, потому что оно отображается правильно, это не должно быть проблемой.

Любая помощь?

Ответы [ 2 ]

10 голосов
/ 13 декабря 2011

Теперь это работает, с комбинацией некоторых вещей:

public class Videos extends Activity {

private WebView mWebView;
private String extra;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.videos_layout);       

    extra = getIntent().getStringExtra("VideosId");        
    mWebView = (WebView) findViewById(R.id.videos_webview); 
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setPluginsEnabled(true);

    final Activity activity = this;
    mWebView.setWebChromeClient(new WebChromeClient() {
      public void onProgressChanged(WebView view, int progress) {
        // Activities and WebViews measure progress with different scales.
        // The progress meter will automatically disappear when we reach 100%
        activity.setProgress(progress * 1000);
      }
    });

    mWebView.setWebViewClient(new MyOwnWebViewClient());   


    mWebView.loadUrl("file:///android_asset/Videos/"+extra+".htm");     
    mWebView.setWebViewClient(new MyOwnWebViewClient());      
}

//Ermöglicht das Zurücknavigieren im Browser mittels Back-Button
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
        mWebView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

И эти записи в манифесте:

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

<application android:icon="@drawable/icon" android:label="@string/app_name" android:hardwareAccelerated = "true">

Но я не знаю, какие из них, по крайней мере, необходимы. Кроме того, невозможно пропустить части видео, мне нужно посмотреть его за один раз . Кто-нибудь знает решение?

И MyOwnWebViewClient :

import android.webkit.WebView;
import android.webkit.WebViewClient;
//Enables the possibility for the User to navigate in the WebView and prevents,
//that the Standard-Browser is invoked

public class MyOwnWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

}
0 голосов
/ 23 ноября 2015

Я столкнулся с той же проблемой, я поделился своим кодом на github .Все, что вам нужно сделать, это вызвать эту строку кода: -

        getSupportFragmentManager()
                .beginTransaction()
                .add(R.id.frag_root,
                        UniversalWebViewFragment.newInstance(
                                <place your you tube url>, false)).commit();

Он также поддерживает портретный режим.

...