当前位置: 首页 > 知识库问答 >
问题:

使用Android Studio从资产文件夹加载html文件到android上的webview

澹台镜
2023-03-14

我正在使用Android Studio/Gradle。

app\src\main\android_资产文件夹中有一个名为chart的文件。html。。

我正在尝试将此文件加载到我的webview,如下所示:

WebView view = new WebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("file:///android_asset/chart.html");
setContentView(view);

但我总是遇到错误:无法加载,因为找不到错误文件。

我错过了什么?

共有3个答案

姬英武
2023-03-14

来自Gugelhupf的回答,但有原始资源
解决方案的优点:您可以继续翻译!

WebView webView = findViewById(R.id.about_text);
try {
  InputStream inputStream = getResources().openRawResource(R.raw.about);
  BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
  StringBuilder stringBuilder = new StringBuilder();
  String line;
  while ((line = bufferedReader.readLine()) != null) {
    stringBuilder.append(line).append("\n");
  }
  webView.loadDataWithBaseURL(null, stringBuilder.toString(), "text/html", "UTF-8", null);
} catch (IOException e) {
  e.printStackTrace();
}
乜飞航
2023-03-14

类似的问题:

我使用了许多ProductFlavor,它们有不同的应用程序ID。

如果我试图加载一个html文件从res/raw/file.html我得到一个ClassNotFoundExctive没有找到类"product.flavor.package.R$raw"

R.java文件具有不同的包名。

看起来你无法从webView这样的文件加载URL。loadUrl(“file:///android_res/raw/page.html),因为WebView尝试使用具有不同包名的R.class文件。

我假设从资产加载html文件的ERR_FILE_NOT_FOUND也有同样的问题,但您没有看到异常。(webView.loadUrl("file:///android_assets/page.html " ); )

有了这个小工作,我解决了我的问题:

try {
        AssetManager assetManager = context.getAssets();
        InputStream stream = assetManager.open("page.html");
        BufferedReader r = new BufferedReader(new InputStreamReader(stream));
        StringBuilder total = new StringBuilder();
        String line;
        while ((line = r.readLine()) != null) {
            total.append(line).append("\n");
        }
        webView.loadDataWithBaseURL(null, total.toString(), "text/html", "UTF-8", null);
    } catch (Exception xxx) {
        Log.e(TAG, "Load assets/page.html", xxx);
    }

我希望这有帮助。斯蒂芬

徐兴昌
2023-03-14

目录名应该是资产而不是android_assets

如上图所示,右键点击你的应用程序-

现在把你的手放好。资产文件夹中的html文件。

就这样。完成。

剩下的代码和你做的是一样的。

WebView view = new WebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("file:///android_asset/hello.html");
setContentView(view);
 类似资料:
  • 我在我的android应用程序中有一个webview,加载的html文件在服务器上,但是我需要从应用程序的资产文件夹地址一些文件。我想问一下如何处理这些文件。 谢谢

  • 该文件位于我的资产文件夹下。因此,我正在设置WebViewClient并将我的页面加载到其中。但是我得到一个“网页不可用”的错误。 以下是我的活动代码: 和布局文件:

  • 任务:我已经创建了一个片段抽屉,在这里我有textview,文本“MyName”就在我的图像下面,然后有nav_row项,所以我想做的是,当单击该文本时,它应该将活动从MainActivity切换到profileinfo,我创建了webview,它的活动profileinfo应该加载我的html文件...所以我做的是这里--> webview xml在这里--> profileinfo活动 这是我

  • 我在maven项目的src/main/resource文件夹中下载了.sh文件,我正在通过下面的代码阅读它 如果我使用jar EX作为应用程序运行:- java-jar runscript.jar SCHEMA_NAME /users/ideaprojects/runscript/target/file:/users/ideaprojects/runscript/target/runscripts

  • 我正试图将本地url加载到webview,但我不想使用assets文件夹,因为它是只读的,而且我需要从Web服务更新文件。 Web服务调用运行良好,并将html文件保存到设备上的文件夹中,使用 这将在应用程序的存储空间中创建一个文件夹'app_live',并用HTML填充该文件夹。 现在,当我把它加载到我的Webview中时,应用程序显示“网站不可用”,尽管livefolder.isdir()返回