在运行时写入 android 资产目录?

Writing to android assets directory at runtime?

我从网络请求中获得 html 片段更新,需要将它们插入到本地 html 文件中,然后可以在运行时使用 webView.loadUrl 获取该文件。

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

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

为此,您应该从 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 中加载您的数据。调用WebView的loadData()方法

webView.loadData(yourData, "text/html; charset=utf-8", "UTF-8");

资产目录是只读的,不能动态更改。
您可以读取流动目录中的白文件:

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/