在漂白剂报告应用程序中,他们有一个带有Youtube视频的WebView。当您按全屏图标时,视频比全屏播放。我怎样才能做到这一点?它是服务器端问题还是android问题? 我只想补充一点,即使它是一个youtube视频,你看到的播放器不是youtube播放器,而是另一个播放器。
编辑: youtube是一个组件是url页面。它不是youtube网页所以我不能使用“shouldOveriteUrl”,而且,我不是只谈论YouTube视频,我说的是任何视频组件。我可以在服务器上做一些事情,比如用其他播放器包装视频组件吗? 谢谢!
答案 0 :(得分:1)
//试试这个支付Youtube视频的示例活动
public class MyWebViewClient extends WebViewClient {
public Activity mActivity;
public MyWebViewClient(Activity activity,) {
super();
mActivity = activity;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Uri uri = Uri.parse(url);
if (uri.getHost().contains("youtube.com")) {
IntentUtils.viewYoutube(mActivity, url);
return true;
}
return false;
}
public static void viewYoutube(Context context, String url) {
IntentUtils.viewWithPackageName(context, url, "com.google.android.youtube");
}
public static void viewWithPackageName(Context context, String url, String packageName) {
try {
Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
if (isAppInstalled(context, packageName)) {
viewIntent.setPackage(packageName);
}
context.startActivity(viewIntent);
} catch (Exception e) {
Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
context.startActivity(viewIntent);
}
}
public static boolean isAppInstalled(Context context, String packageName) {
PackageManager packageManager = context.getPackageManager();
try {
packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
return true;
} catch (NameNotFoundException e) {
}
return false;
}
@Override
public void onPageFinished(final WebView view, String url) {
String javascript = "javascript:" +
"var iframes = document.getElementsByTagName('iframe');" +
"for (var i = 0, l = iframes.length; i < l; i++) {" +
" var iframe = iframes[i]," +
" a = document.createElement('a');" +
" a.setAttribute('href', iframe.src);" +
" d = document.createElement('div');" +
" d.style.width = iframe.offsetWidth + 'px';" +
" d.style.height = iframe.offsetHeight + 'px';" +
" d.style.top = iframe.offsetTop + 'px';" +
" d.style.left = iframe.offsetLeft + 'px';" +
" d.style.position = 'absolute';" +
" d.style.opacity = '0';" +
" d.style.filter = 'alpha(opacity=0)';" +
" d.style.background = 'black';" +
" a.appendChild(d);" +
" iframe.offsetParent.appendChild(a);" +
"}";
view.loadUrl(javascript);
super.onPageFinished(view, url);
}
答案 1 :(得分:0)
如果您希望在不使用Android中的应用程序的情况下在webview上运行视频,则必须具有服务器端视频播放器。
Webview不会默认允许Javascript,这很可能是您的视频播放器在网站上使用的内容。您很可能需要告诉您的Webview使用Javascript,以便它至少尝试播放视频(我说尝试因为我自己从未这样做过,我通常会使用播放器活动来播放视频)。
因此,通过引用您的activies webview对象,您可以执行此操作:
browser = (WebView) findViewById(R.id.webbrowser_wvViewer);
browser.getSettings().setJavaScriptEnabled(true);
希望这对你有帮助.. :))