2017-12-12 5 views
0

Ich habe den Code für die Wiedergabe von YouTube in WebView auf Android. Es funktioniert gut auf neuen Telefonen (Android 4.4, 5.1, 6, 7 OS), aber wenn ich es auf Android 4.0.3 versuchte, öffnet es den YouTube-Rahmen mit Steuerelementen und nach dem Klicken auf Button Play in der Mitte wird der graue Hintergrund alle angezeigt die Zeit.Youtube Video eingebettet mit iframe nicht auf Android 4.0.3 spielen

Der Code:

private void initializeWebView() {  

    WebView webView = (WebView) findViewById(R.id.webView); 

    //webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
    webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); 
    webView.setBackgroundColor(getResources().getColor(R.color.semi_transparent_black_20percentage)); 
    webView.getSettings().setBuiltInZoomControls(true); 
    //webView.getSettings().setDisplayZoomControls(false); 

    webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      return false; 
     } 
    }); 
    WebSettings webSetting = webView.getSettings(); 
    webSetting.setJavaScriptEnabled(true); 
    webSetting.setDisplayZoomControls(false); 

    //webSetting.setLoadWithOverviewMode(true); 
    //webSetting.setUseWideViewPort(true); 
    int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); 
    webView.setLayoutParams(new RelativeLayout.LayoutParams(screenWidth/2, LayoutParams.MATCH_PARENT)); 
    getWindow().setFlags(
      WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, 
      WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); 
    webView.getSettings().setPluginState(WebSettings.PluginState.ON); 
    webSetting.setJavaScriptEnabled(true); 
    webSetting.setBuiltInZoomControls(true); 
    webSetting.setAllowContentAccess(true); 
    webSetting.setEnableSmoothTransition(true); 
    webSetting.setLoadsImagesAutomatically(true); 
    webSetting.setLoadWithOverviewMode(true); 
    webSetting.setSupportZoom(false); 
    webSetting.setUseWideViewPort(true); 
    webSetting.setAppCacheEnabled(true); 
    webSetting.setSupportMultipleWindows(true); 

    webView.setVisibility(View.VISIBLE); 
} 



public void loadPageIntoWebView(String htmlFilename){ 

    AssetManager mgr = getBaseContext().getAssets(); 
    try { 
     String htmlContentInStringFormat = ""; 
     WebView webView = (WebView) findViewById(R.id.webView); 
     String frameVideo = "<body>Video From YouTube<br><iframe width=\"420\" height=\"315\" src=\"https://www.youtube.com/embed/2a7f29Jvihc?wmode=transparent\" frameborder=\"0\" allowtransparency></iframe></body>"; 
     htmlContentInStringFormat = frameVideo; 
     webView.loadDataWithBaseURL(null, htmlContentInStringFormat, "text/html", "utf-8", null); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    }  
} 

Dieser Code funktioniert gut und spielen YouTube-Videos auf neueren Handys (Android OS4.4-7).

Was sollte ich ändern, damit es auch auf Android 4.0.3 funktioniert?

this is the photo showing the gray background without playing youtubevideo after clicking on the button play inthe middle of the screen:

Antwort

0

gelöst!

Nachdem ich hinzugefügt, um die folgende Zeile auf Android arbeitet 4.0.3 aswell:

webView.setWebChromeClient(new WebChromeClient() {}); 

Es ist nicht zwingend, aber ich hinzugefügt, um die Zeile vor dieser Zeile: webView.setWebViewClient (neu WebViewClient()

Hoffnung, dass diese Lösung andere Kollegen arbeiten mit Epson Moverio BT-200 smart Brille helfen usw.

;-)

Verwandte Themen