2015-03-30 8 views
5

पर प्रदर्शित नहीं होता है, मैं वर्तमान में अपने एंड्रॉइड ऐप पर एक यूट्यूब एम्बेड को कार्यान्वित करने की कोशिश कर रहा हूं जो इसकी सामग्री को प्रदर्शित करने के लिए वेबव्यू का उपयोग करता है और मैं एपीआई 14 और ऊपर लक्षित कर रहा हूं लेकिन समस्या आईफ्रेम यूट्यूब एम्बेड मेरे वेबव्यू पर 4.2.2 और नीचे दिखाया नहीं गया है लेकिन 4.3 और ऊपर संस्करण पर ठीक काम करता है। मैं मैं क्या याद किया पर खो रहा हूँ, लेकिन नमूने के लिए यहाँ कोड मैं लागू करने के लिए उपयोग कर रहा हूँ है:iframe एम्बेड के साथ एंड्रॉइड वेबव्यू 4.2.2 और

String customHtml = ""; 

     String video; // = "<iframe src=\"http://www.youtube.com/embed/" + "dRvIiIVoVNw" + "\" width=\"100%\" height=\""+ 320 +"px\" frameborder=\"0\"></iframe>"; 

     video = "<div id=\"player\"></div>" + 
       " <script>" + 
       "  var tag = document.createElement('script');" + 
       "  tag.src = \"https://www.youtube.com/iframe_api\";" + 
       "  var firstScriptTag = document.getElementsByTagName('script')[0];" + 
       "  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);" + 
       "  var player;" + 
       "  function onYouTubeIframeAPIReady() {" + 
       "  player = new YT.Player('player', {" + 
       "   height: '390'," + 
       "   width: '640'," + 
       "   videoId: 'dRvIiIVoVNw'," + 
       "   events: {" + 
       "   'onReady': onPlayerReady," + 
       "   'onStateChange': onPlayerStateChange" + 
       "   }" + 
       "  });" + 
       "  }" + 
       "  function onPlayerReady(event) {" + 
       "  event.target.playVideo();" + 
       "  }" + 
       "  var done = false;" + 
       "  function onPlayerStateChange(event) {" + 
       "  if (event.data == YT.PlayerState.PLAYING && !done) {" + 
       "   setTimeout(stopVideo, 6000);" + 
       "   done = true;" + 
       "  }" + 
       "  }" + 
       "  function stopVideo() {" + 
       "  player.stopVideo();" + 
       "  }" + 
       " </script>"; 

     customHtml = "<html>" + "<body>" 
        /*add the video here*/ 
       + video 
       + "<b><font size=\"" 
       + 5 + "\">" 
       //+ "<div id='wrap'>" 
       + "Test title" 
       + "</font></b>" 
       + "<font size=\"" + 3 + "\"><br><br><i>Detail1: " + "Test" + "<br/>" + new_date + "<br />Detail2: "+ "Test" +"</i></font><br><br>" 
       + "<font size=\"" + 3 + "\">" 
       + "Detail content" + "</font>" 
       + "<br><br><br></body></html>"; 

     webView.loadData(customHtml, "text/html; charset=utf-8", "UTF-8"); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.setWebChromeClient(new WebChromeClient()); 
     webView.getSettings().setPluginState(WebSettings.PluginState.ON); 
     webView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND); 
     webView.setWebViewClient(new DetailWebViewClient()); 

DetailWebViewClient सिर्फ एक सरल ओवरराइड है:

private class DetailWebViewClient extends WebViewClient { 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (url.contains("http")) { 
       Intent webView = new Intent(getBaseContext(), ActivityWebView.class); 
       webView.putExtra("url", url); 
       startActivity(webView); 
       return true; 
      } 
      return false; 
     } 

     @Override 
     public void onReceivedError(WebView view, int errorCode, 
            String description, String callbackUrl) { 

      super.onReceivedError(view, errorCode, description, callbackUrl); 

      Toast.makeText(getBaseContext(), 
        description + " errorcode=" + errorCode, Toast.LENGTH_SHORT) 
        .show(); 

     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
     } 

    } 

अब मैं क्या करने की कोशिश की दोनों आइफ्रेम है एक और आईफ्रेम एपीआई here लेकिन दोनों पर कोई भाग्य नहीं है।

मैं अपने मैनिफेस्ट पर android:hardwareAccelerated="true" का भी उपयोग करता हूं लेकिन अभी भी काम नहीं करता है। मैंने अन्य समस्याओं पर भी एक ही समस्या के साथ खोज की है लेकिन वे सभी समाधान मेरे अंत में काम नहीं करते हैं (WebChromeClient, PluginsEnabled, HardwareAccelerated)। आशा है कि आप इस पर मेरी मदद कर सकते हैं।

उत्तर

2

यह पहले से ही तय है और समस्या इन लाइनों है:

webView.getSettings().setPluginState(WebSettings.PluginState.ON); 
webView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND); 

तो यहाँ पूर्ण वेबव्यू सेटिंग्स मैं प्रयोग किया जाता है:

 webView.getSettings().setJavaScriptEnabled(true); 
     webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
     webView.getSettings().setSupportMultipleWindows(true); 
     webView.setWebChromeClient(new WebChromeClient()); 
     webView.setHorizontalScrollBarEnabled(false); 
     webView.loadData(customHtml, "text/html; video/mpeg", "UTF-8"); 
     webView.setWebViewClient(new DetailWebViewClient()); 

और वहाँ तुम अब मेरी अंत पर ठीक काम कर रहा जाने। :)

संबंधित मुद्दे