当前位置:  开发笔记 > 前端 > 正文

在Debug buildvariant中无法访问/ res/raw下的文件

如何解决《在Debugbuildvariant中无法访问/res/raw下的文件》经验,为你挑选了1个好方法。

在Android Studio/Gradle Android项目中,我有两个构建变体,Debug和Release(标准项目设置).

你可以在这张图片中看到我的文件夹结构:

在此输入图像描述

我有一个WebView,它应该显示/ res/raw-folder中的imprint.html.WebView说,这适用于发布版本,但不适用于调试版本

Couldn't load website under 'file///android_res/raw/imprint.hml
net::EE_FILE_NOT_FOUND

这让我很困惑.

我究竟做错了什么?



1> DDsix..:

尝试删除后缀到调试模式.

此外,请确保您有proguard规则

-keepclassmembers class **.R$* {public static ;}
-keep class **.R$*

编辑:找出问题(调试应用程序包后缀".debug")后,尝试以这种方式加载文件:

    String path = "android.resource://" + getPackageName() + "/" + R.raw.my_web_file;
    Uri myFileUri = Uri.parse(path);
    File file = new File(myFileUri.toString());
    webview.loadUrl(file.getAbsolutePath());

第二次编辑:如果仍然不起作用(虽然对我来说有效),试试这个:使用输入流将文件加载到webview.

String prompt = "";
try {
    InputStream inputStream = getResources().openRawResource(R.raw.my_web_file);
    byte[] buffer = new byte[inputStream.available()];
    inputStream.read(buffer);
    prompt = new String(buffer);
    inputStream.close();
} catch (IOException e) {
    e.printStackTrace();
}

webview.loadData(prompt,"text/html","utf-8");


好的,你的第一次更新会加载一个空白的webview; 没有例外或错误.你的第二次更新就行了.做得好!
推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有