问题描述
阅读所有帖子,在第 3 天尝试从本地资产应用 css。
WebView wv = new WebView(getApplicationContext());
//wv.getSettings().setUseWideViewPort(false);
wv.setInitialScale(100);
wv.getSettings().setLoadWithOverviewMode(true);
wv.getSettings().setUseWideViewPort(true);
wv.getSettings().setMinimumFontSize(30);
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setAllowFileAccess(true);
wv.getSettings().setDomStorageEnabled(true);
wv.getSettings().setAllowFileAccessFromFileURLs(true);
wv.getSettings().setAllowUniversalAccessFromFileURLs(true);
wv.setWebContentsDebuggingEnabled(true);
wv.getSettings().setMixedContentMode(0);
wv.getSettings().setAppCacheEnabled(false);
//wv.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
// wv.setScrollbarFadingEnabled(true);
String mimeType = "text/html";
String encoding = "utf-8";
String htmlData = "<html><head><link href=\"myco.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body>" + jResponse.getString("htmlout")+"</body></html>";
//wv.loadData(htmlData,mimeType,encoding);
wv.loadDataWithBaseURL("file:///android_asset/",htmlData,encoding,null);
/data/data/com.myco/files 中没有资产,如果我注释“loadDataWithBaseURL”并放置,我的资产 css 文件存在于我的应用程序 src/main/assets 中
wv.loadData(htmlData,encoding);
然后我的表加载收到的动态内容,没有 css 样式 - 包括使用 base 加载和使用 css 的调用,但 webview 不显示。
“data/data/com.myapp/files 文件夹是空的 - 我试过手动将 css 文件复制到 files 文件夹中,没有任何区别......ONNNNNNN 发生了什么?
编辑:
使用 loadData 并在我的 css src 中指定“file:///android_asset/myco.css”,我现在看到此消息(使用 loadDataWithBaseURL 时不存在)
I/chromium: [INFO:CONSOLE(1)] "Not allowed to load local resource: file:///android_asset/myco.css",
无论我是否手动将css文件复制到文件中,结果都是一样的
清单包含:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
我还有一个函数,它在使用 webview 的活动中创建时请求用户的读取权限:
private void checkExternalStoragePermission() {
int permissionCheck = ContextCompat.checkSelfPermission(
this,Manifest.permission.READ_EXTERNAL_STORAGE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
Log.i("Message","PERMISSION NOT SET.");
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE},225);
} else {
Log.i("Message","Permission OK!");
}
}
这有效:
String htmlData = "<html><head><link href=\"https://thesitedomain.org/myco_app.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body>" + jResponse.getString("htmlout")+"</body></html>";
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)