Android WebView 在使用 iframe 播放 Html 时显示空白页



>我正在尝试在Android的WebView中显示html文件,bu当我尝试它时,我看到我的Android手机黑屏,Html有iframe

网页代码

<iframe style="width:100%; height:100%;" id="webPage" frameborder="0" src="http://www.youtube.com/embed/XGSy3_Czz8k">
</iframe>

<script>
var Url, Interval;
function init() {
document.getElementById('webPage').setAttribute('src', Url);
}
function setParams(params) {
//console.log(params);
params.forEach(element => {
switch (element.key) {
case "Url":
Url = element.value;
break;
case "Interval":
Interval = element.value;
break;
}
});
document.getElementById('webPage').setAttribute('src', Url);
setInterval(function () {
document.getElementById('webPage').setAttribute('src', Url);
}, (Interval * 60 * 1000));
}
function listener(event) {
setParams(event.data);
}
if (window.addEventListener) {
window.addEventListener('message', listener, false);
} else if (window.attachEvent) { // ie8
window.attachEvent('onmessage', listener);
}
function deleteContent()

{ 尝试 { var el = document.getElementById('webPage'(; el.setAttribute('src',"about:blank"(; el.parentNode.removeChild(el(; } 捕获(错误( { console.log("网页删除错误:"+错误(; } }

安卓代码

browser.setInitialScale(60);
//WebView browser = new WebView(context);
browser.getSettings().setJavaScriptEnabled(true);
browser.loadUrl( "file:///android_asset/index.html");
browser.setWebChromeClient(new WebChromeClientCustomPoster());
//((Activity) context).setContentView(browser);
WebSettings ws = browser.getSettings();
ws.setAllowFileAccess(true);
ws.setAllowFileAccessFromFileURLs(true);
ws.setAllowUniversalAccessFromFileURLs(true);
ws.setJavaScriptEnabled(true);
ws.setJavaScriptCanOpenWindowsAutomatically(true);
ws.setAllowContentAccess(true);
ws.setDomStorageEnabled(true);
browser.setWebViewClient(new WebViewClient(){
@SuppressLint("SyntheticAccessor")
public void onPageFinished(WebView view, String url){
// do your stuff here
JSONObject userData = new JSONObject();
try {
userData.put("PlayerCode", CommonUseFunc.getJsonText("Player","PlayerCode"));
userData.put("PrivateKey",CommonUseFunc.getJsonText("Player","PrivateKey"));
userData.put("PublicKey",CommonUseFunc.getJsonText("Player","PublicKey"));
userData.put("Api",CommonUseFunc.getJsonText("General","ApplicationServer","API"));
userData.put("VideoMode","0");
userData.put("BasePath", Objects.requireNonNull(context.getExternalFilesDir(null)).getAbsolutePath());
} catch (JSONException e) {
e.printStackTrace();
}

JSONObject jsonObjectInit = new JSONObject();
try{
jsonObjectInit.put("MessageType","init");
jsonObjectInit.put("Data",userData);
browser.evaluateJavascript("javascript:PIXAGE.Platform.WebMethod.receiveMessage('" + jsonObjectInit + "')",
null);
Utils.logProcess(Utils.timeInfo(), "StartManager", "initialize Web View", 0);
}catch (JSONException e){
e.printStackTrace();
Utils.logProcess(Utils.timeInfo(), "StartManager", "initialize Web View Eror", 1);
}

JSONObject jsonObject = new JSONObject();
JSONObject obj = null;
try {
obj = new JSONObject(getPublishment);
} catch (JSONException e) {
e.printStackTrace();
}
try {
jsonObject.put("Guid",1111);
jsonObject.put("MessageType","newPublishment");
jsonObject.put("Data",obj);
browser.evaluateJavascript("javascript:PIXAGE.Platform.WebMethod.receiveMessage('" + jsonObject + "')",
null);
Utils.logProcess(Utils.timeInfo(), "StartManager", "Data Sended", 0);
} catch (JSONException e) {
e.printStackTrace();
Utils.logProcess(Utils.timeInfo(), "StartManager", "Data Sended Eror", 0);
}
}
});

试试这个 -->

创建自定义网页视图:

public class TouchyWebView extends WebView {
public TouchyWebView(Context context) {
super(context);
}
public TouchyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TouchyWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onTouchEvent(MotionEvent event){
requestDisallowInterceptTouchEvent(true);
return super.onTouchEvent(event);
}}

包括你的XML(代替WebView(:

<com........TouchyWebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webview"
/>

在活动中添加此内容:

ws.loadDataWithBaseURL(null,"file:///android_asset/index.html", "text/html", "UTF-8", null);
WebSettings settings = ws.getSettings();
WebSettings webSetting = ws.getSettings();
webSetting.setBuiltInZoomControls(true);
settings.setDomStorageEnabled(true);
ws.getSettings().setJavaScriptEnabled(true);
ws.setVerticalScrollBarEnabled(true);
ws.setHorizontalScrollBarEnabled(true);
ws.setAllowFileAccess(true);
ws.setAllowFileAccessFromFileURLs(true);
ws.setAllowUniversalAccessFromFileURLs(true);
ws.setJavaScriptEnabled(true);
ws.setJavaScriptCanOpenWindowsAutomatically(true);
ws.setAllowContentAccess(true);
ws.setDomStorageEnabled(true);

最新更新