我正在编写一个Android应用,可以正确加载并显示 assets 文件夹中的本地HTML内容。这些是非常简单的页面,只有图片和文字(没有按钮,也没有 javascript )。
由于最后一刻的要求,现在需要从设备的文件系统加载这些HTML文件。我已经移动了文件并更新了它们的路径,但现在我的应用程序只显示空白页面(没有错误)。
我的原始代码(从 assets 文件夹加载):
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
String pagePath = "file:///android_asset/content/cover.html";
LayoutInflater inflater =
(LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.webview, null);
WebView webView = (WebView) view.findViewById(R.id.webView);
// The app performs better with these
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
webView.loadUrl(pagePath);
return view;
}
在我当前的代码中 - 我尝试从设备的存储中显示相同的页面 - 我刚刚更改了 pagePath :
String pagePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/content/cover.html";
我的布局( webview.xml )如下:
<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<WebView
android:id="@+id/webView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"></WebView>
</LinearLayout>
我已经尝试了许多针对此问题的在线解决方案,包括:
将布局更改为 RelativeLayout (https://stackoverflow.com/a/30599912/2430853)
添加 myWebView.setWebViewClient(new WebViewClient()); (Android WebView showing blank page for local files)
使用 android:hardwareAccelerated =“false”(https://stackoverflow.com/a/22801655/2430853)
或者只是设置一系列选项,例如 setDomStorageEnabled(true); (https://stackoverflow.com/a/31040469/2430853);或者, setUseWideViewPort(true); 和 setLoadWithOverviewMode(true)(https://stackoverflow.com/a/14301637/2430853)
到目前为止没有任何作用......
答案 0 :(得分:1)
因此,如果要从外部存储加载它们,则必须添加权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
试试这个网址:
String url = "file:///" + Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "content/myFile.html";