如何将html文件从设备存储下载文件夹加载到WebView



我的HTML文件是一个包含声音图像动画的游戏文件,我可以检索该文件,但它没有播放。我知道如何使用从项目资产文件夹访问它

myWebView.loadUrl("file:///android_asset/____/index.html");

但当我从下载文件夹的设备存储中收到它时,我无法在webview中播放该文件。

以下是从下载文件夹显示html文件的代码:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath() + "/Download");
intent.setDataAndType(uri, "text/html");
startActivityForResult(intent,PICKFILE_RESULT_CODE); 

在onActivityResult中,我这样写道:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case PICKFILE_RESULT_CODE :
if(resultCode==RESULT_OK){
Uri uri1 = data.getData();
File file1 = new File(uri1.getPath());
final String[] split = file1.getPath().split(":");
String filePath = split[1];
/* after splitting it will be /storage/emulated/0/Download/index.html */
if (filePath.endsWith(".html")){
mywebview.setWebContentsDebuggingEnabled(true);
mywebview.getSettings().setJavaScriptEnabled(true);
mywebview.getSettings().setBuiltInZoomControls(true);
mywebview.getSettings().setUseWideViewPort(true);
mywebview.getSettings().setAllowUniversalAccessFromFileURLs(true);
mywebview.getSettings().setAllowFileAccessFromFileURLs(true);
mywebview.clearCache(true);
mywebview.setWebViewClient(new WebViewClientClass());
mywebview.loadUrl(filePath);
mywebview.evaluateJavascript(filePath);
}
}
break;
}
}
private class WebViewClientClass extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}

所以,如果我做错了什么,请纠正我,或者告诉我正确的方法。

有几件事要做。

  1. 确保应用程序具有READ访问权限,并且应用程序可以访问正确的文件
  2. 这是一个大的安全问题,因此您不应该读取公共文件并将其加载到您的应用程序中

拥有文件后,加载其内容。

您还在ActivityResult中获得一个URI。您不能仅将URI转换为文件。使用此选项可以读取文件的内容。(科特林(

context.contentResolver.openInputStream(uri).reader().readText()

一旦你有了内容,

webview.loadData(content, MIME_TYPE, ENCODING)

其中

MIME_TYPE = "text/html"
ENCODING = "utf-8"

最新更新