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

时间:2018-08-27 23:45:06

标签: android android-webview android-assets

我从网络请求中获取html代码段更新,需要将其插入到本地html文件中,然后可以在运行时用webView.loadUrl来获取。

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

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

2 个答案:

答案 0 :(得分: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中加载数据。调用WebView的loadData()方法

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

答案 1 :(得分: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 /