不幸的是,我在这个网站上找不到任何解决方案,在其他方面,我可能刚刚看到它或使用它,但没有正常工作。这个小伙子需要你的帮助。似乎无法让它发挥作用。
我有这个Android应用程序,它在显示youtube频道播放列表的大多数页面中使用Youtube-Api。
像这样(播放列表Youtube-Api查询)
<script type="text/javascript">
$(function () {
var playlist = "https://gdata.youtube.com/feeds/api/users/******/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>
这是我的应用程序的布局 (主页和播放列表页面)
主页显示使用youtube查询的精选视频,如下所示的查询示例。至于播放列表查询,它显示在上面。
https://gdata.youtube.com/feeds/api/videos?v=2&alt=jsonc&orderby=viewCount&max-results=5&q=xxxxxx
所以我的问题是,导航到导航菜单后主页 - &gt;播放列表 - &gt;主页它显示了我遇到的问题。 所以就像当我打开Android应用程序时,它从HOME页面开始然后我导航到播放列表页面,它也有效。但是 ONCE我再次导航到主页,它不再显示精选视频,我导航到播放列表页面,它不再显示播放列表。在我清除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>
有关如何解决此问题的任何想法?如果有人帮助我会很高兴,谢谢。
答案 0 :(得分:0)
终于做到了,经过一些实验后,我意识到在返回并打开和卸载应用程序之后,出于某种原因存储缓存或因此无法工作。所以我做的是在页面加载后放置view.clearCache(true);
。
public class CustomWebViewClient extends WebViewClient
{
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.clearCache(true);
}
}
答案 1 :(得分:0)
youtube vidoes有不同的格式,andriod支持一些格式,如3gp,mp4等...,有一个解决方案,请从谷歌播放免费安装MXPlayer或VPlayer,现在你可以播放视频到MXPlayer直接使用意图选择器,希望这对你有帮助。