在运行时向Android资产目录写入数据?

3

我从网络请求中获取 HTML 片段更新,需要将它们插入到本地的 HTML 文件中,以便在运行时使用 webView.loadUrl 进行获取。

我可以轻松使用 webView.loadUrl/android_assets/myFile.html 加载文件,但是无法写入该文件,因为在运行时无法访问 /android_assets 目录:在运行时写入 /android_assets

所以我的问题是,是否有其他位置可以放置 myFile.html,以便我可以在运行时对其进行写入,并将其加载到 webView 中?

2个回答

1
为了实现这一目标,您应该从HTML中加载内容,进行修改,并将其保存到存储中。
Usage: String yourData = LoadData("myFile.html");

public String LoadData(String inFile) {
        String tContents = "";

    try {
        InputStream stream = getAssets().open(inFile);

        int size = stream.available();
        byte[] buffer = new byte[size];
        stream.read(buffer);
        stream.close();
        tContents = new String(buffer);
    } catch (IOException e) {
        // Handle exceptions here
    }

    return tContents;    
 }

调用WebView的loadData()方法来加载您的数据。
webView.loadData(yourData, "text/html; charset=utf-8", "UTF-8");

这并没有确切地回答问题,因为getAssets()方法仍然会访问/android_assets目录。我正在寻找其他更改HTML文件的位置。不过,你的回答仍然非常有帮助! - Jupiter

0

资源目录是只读的,无法动态更改。
您可以读取和写入以下目录中的文件:

Context.getFilesDir()  

无需权限
典型位置:/data/data/app.package.name/files/

Context.getExternalFilesDir(null)  

在API级别<= 18时需要WRITE_EXTERNAL_STORAGE权限
典型位置:/sdcard/Android/data/app.package.name/files/

Environment.getExternalStorageDirectory()  

需要WRITE_EXTERNAL_STORAGE权限
典型位置:/sdcard/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接