Javascript Youtube API Android Webview无法正常工作

Javascript Youtube API Android Webview无法正常工作,javascript,android,youtube-api,android-webview,youtube-javascript-api,Javascript,Android,Youtube Api,Android Webview,Youtube Javascript Api,不幸的是,我在这个网站上找不到任何解决方案,从另一方面来说,我可能刚刚看到或使用过它,但没有正确地使用它。这个年轻人需要你们的帮助。似乎真的无法让它发挥作用 我有一个Android应用程序,它在显示Youtube频道播放列表的大多数页面中使用Youtube Api 像这样(播放列表Youtube Api查询) 所以我的问题是,在导航到导航菜单主页->播放列表->主页后,它显示了我遇到的问题。 就像,当我打开Android应用程序时,它在主页上启动,然后我导航到播放列表页面,它也可以工作。但是一

不幸的是,我在这个网站上找不到任何解决方案,从另一方面来说,我可能刚刚看到或使用过它,但没有正确地使用它。这个年轻人需要你们的帮助。似乎真的无法让它发挥作用

我有一个Android应用程序,它在显示Youtube频道播放列表的大多数页面中使用Youtube Api

像这样(播放列表Youtube Api查询

所以我的问题是,在导航到导航菜单主页->播放列表->主页后,它显示了我遇到的问题。 就像,当我打开Android应用程序时,它在主页上启动,然后我导航到播放列表页面,它也可以工作。但是一旦我再次导航到主页,它将不再显示特色视频,我导航到播放列表页面,它将不再显示播放列表。在我清除android应用程序中的数据并再次运行应用程序后,它会重复错误

这是我的android代码

package xxxxxx.xx;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.KeyEvent;
import android.view.Menu;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class MainActivity extends Activity {

    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView mWebView = null;
        mWebView = (WebView) findViewById(R.id.webtest);
        mWebView.getSettings().setPluginState(PluginState.ON);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.setWebViewClient(new CustomWebViewClient());
        try {
            mWebView.loadUrl("http://xxxxxxxx.com/android/index.html"); 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    public class CustomWebViewClient extends WebViewClient
    {
            @Override
            public void onPageFinished(WebView view, String url) {
                if(url.endsWith("request")){
                   String redirectUrl = "http://xxxxxx.com/xxxxx/index.html";
                   view.loadUrl(redirectUrl);
                   return;
               } else if (url.startsWith("https://m.facebook.com/dialog/permissions.request")) {
                   String redirectUrl = "http://xxxxxxx.com/android/index.html";
                   view.loadUrl(redirectUrl);
                   return;                 
               }
                super.onPageFinished(view, url);
            }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        WebView mWebView = null;
        mWebView = (WebView) findViewById(R.id.webtest);
        if(event.getAction() == KeyEvent.ACTION_DOWN){
            switch(keyCode)
            {
            case KeyEvent.KEYCODE_BACK:
                if(mWebView.canGoBack() == true){
                    finish();
                    //mWebView.goBack();
                }else{
                    finish();
                }
                return true;
            }

        }
        return super.onKeyDown(keyCode, event);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}
然后播放列表中的我的Javascript代码:

<div id="r_playlist"></div>
<script type="text/javascript">
$(function () {   
var playlist = "https://gdata.youtube.com/feeds/api/users/xxxxxxx/playlists?v=2&alt=jsonc";
    $.getJSON(playlist,  function(response) {
      $.each(response.data.items, function(index, item) {
        $('#r_playlist').append('<div id="pl_title" class="playlists topBdr btmBdr" onclick=navlist_video("'+ item.id +'");><div class="pl_lb">' + item.title + '</div></div>');
      }); 
        $('.playlists').first().removeClass('topBdr');
        $('.playlists').last().removeClass('btmBdr');
    }); 
});
</script>

$(函数(){
var播放列表=”https://gdata.youtube.com/feeds/api/users/xxxxxxx/playlists?v=2&alt=jsonc";
$.getJSON(播放列表、函数(响应){
$.each(response.data.items,函数(索引,项){
$('r#u播放列表')。追加(''+item.title+'');
}); 
$('.playlists').first().removeClass('topBdr');
$('.playlists').last().removeClass('btmBdr');
}); 
});

关于如何解决这个问题有什么想法吗?如果有人帮助我,我会很高兴的,谢谢

最后,在进行了一点实验之后,我意识到,由于某种原因,当缓存被存储或无法工作时,我返回并打开并卸载了应用程序。所以我做的是把
view.clearCache(true)页面加载后

public class CustomWebViewClient extends WebViewClient
{
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            view.clearCache(true);
        }
}

youtube视频有不同的格式,andriod只支持3gp、mp4等格式。有一个解决方案,请免费从google play安装MXPlayer或VPlayer,现在您可以使用intent chooser直接将视频播放到MXPlayer中,希望这对您有所帮助

<div id="r_playlist"></div>
<script type="text/javascript">
$(function () {   
var playlist = "https://gdata.youtube.com/feeds/api/users/xxxxxxx/playlists?v=2&alt=jsonc";
    $.getJSON(playlist,  function(response) {
      $.each(response.data.items, function(index, item) {
        $('#r_playlist').append('<div id="pl_title" class="playlists topBdr btmBdr" onclick=navlist_video("'+ item.id +'");><div class="pl_lb">' + item.title + '</div></div>');
      }); 
        $('.playlists').first().removeClass('topBdr');
        $('.playlists').last().removeClass('btmBdr');
    }); 
});
</script>
public class CustomWebViewClient extends WebViewClient
{
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            view.clearCache(true);
        }
}