JavaScript 从 Internet 访问时工作,但从 WebView 上的文件夹资产访问页面时无响应 Android
JavaScript Working When Access From Internet But Not Responding When Access Page From Folder Assets On WebView Android
我尝试访问此页面 url : DEMO FACE TRACKER 使用 android 网络视图。我使用这段代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wv = (WebView) findViewById(R.id.webView);
wv.setWebChromeClient(new WebChromeClient());
wv.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
});
wv.getSettings().setJavaScriptEnabled(true);
wv.addJavascriptInterface(new WebAppInterface(this), "Android");
wv.loadUrl("http://auduno.github.io/clmtrackr/clm_image.html");
}
它起作用了!
但是当我将所有页面(包括 javascript)复制到本地,并从资产文件夹访问它时,应用 return 没有响应。
这是我用来访问本地资产的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wv = (WebView) findViewById(R.id.webView);
wv.setWebChromeClient(new WebChromeClient());
wv.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
});
wv.getSettings().setJavaScriptEnabled(true);
wv.addJavascriptInterface(new WebAppInterface(this), "Android");
wv.loadUrl("file:///android_asset/index.html");
}
有关信息,除媒体之外的所有资产(脚本、css 等)已组合到单个页面中,当我从浏览器(在我的计算机上)访问时它可以工作,但在 android 网页视图。
android 是否对此有特别许可?请帮助:) 谢谢。
您很可能遇到路径问题。它可能不是从您认为的位置加载的。试试添加看看
@Override
public void onLoadResource(WebView view, String resUrl) {
super.onLoadResource(view, resUrl);
Log.d(LOG_TAG,"Loading " + resUrl);
}
添加 setAllowUniversalAccessFromFileURLs 以解决 javascript 从文件加载时的安全问题。
wv.getSettings().setAllowUniversalAccessFromFileURLs(true);
我尝试访问此页面 url : DEMO FACE TRACKER 使用 android 网络视图。我使用这段代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wv = (WebView) findViewById(R.id.webView);
wv.setWebChromeClient(new WebChromeClient());
wv.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
});
wv.getSettings().setJavaScriptEnabled(true);
wv.addJavascriptInterface(new WebAppInterface(this), "Android");
wv.loadUrl("http://auduno.github.io/clmtrackr/clm_image.html");
}
它起作用了!
但是当我将所有页面(包括 javascript)复制到本地,并从资产文件夹访问它时,应用 return 没有响应。
这是我用来访问本地资产的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wv = (WebView) findViewById(R.id.webView);
wv.setWebChromeClient(new WebChromeClient());
wv.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
});
wv.getSettings().setJavaScriptEnabled(true);
wv.addJavascriptInterface(new WebAppInterface(this), "Android");
wv.loadUrl("file:///android_asset/index.html");
}
有关信息,除媒体之外的所有资产(脚本、css 等)已组合到单个页面中,当我从浏览器(在我的计算机上)访问时它可以工作,但在 android 网页视图。
android 是否对此有特别许可?请帮助:) 谢谢。
您很可能遇到路径问题。它可能不是从您认为的位置加载的。试试添加看看
@Override
public void onLoadResource(WebView view, String resUrl) {
super.onLoadResource(view, resUrl);
Log.d(LOG_TAG,"Loading " + resUrl);
}
添加 setAllowUniversalAccessFromFileURLs 以解决 javascript 从文件加载时的安全问题。
wv.getSettings().setAllowUniversalAccessFromFileURLs(true);