在 android webview 中下载由 javascript 生成的文件

Download file generated by javascript in android webview

我有一个带有网络视图的 android 应用程序。

每当用户单击按钮时,JavaScript 都会创建一个 blob,将文本放入其中并进行下载。

这是执行此操作的函数:

function saveTextAsFile(A)
{
    FillTextToWrite(A);
    var textFileAsBlob = new Blob([textToWrite], {
        type: 'text/plain'
    });
    var downloadLink = document.createElement("a");
    downloadLink.download = "Analysis.txt";
    downloadLink.innerHTML = "Download File";
    if (window.webkitURL != null)
    {
        downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
    }
    else
    {
        downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
        downloadLink.onclick = destroyClickedElement;
        downloadLink.style.display = "none";
        document.body.appendChild(downloadLink);
    }

    downloadLink.click();
}

它在任何浏览器中都可以正常工作,但是当我尝试在应用程序中下载它时,没有任何反应。

有没有办法在应用程序中下载 blob,或者更容易更改 JavaScript?

我需要 JavaScript 在浏览器和 android 应用程序上工作,因此将 blob 发送到 JavaScript 中的 android 应用程序将不起作用在浏览器上。

我找到的解决方案是在 Android 应用程序或浏览器中检测 java 脚本是否为 运行(通过向用户代理添加字符串)。

在 Android 应用程序中时,我将变量 textToWrite(通常会进入 blob)发送到 java。

在java脚本中:

if(App){
    Android.sendData(textToWrite);
} else {//make blob}

在java中:

myWebView.addJavascriptInterface(new myJavascriptInterface(this), "Android");

public class myJavascriptInterface {
    Context mContext;

    myJavascriptInterface(Context c) {
        mContext = c;
    }

    @JavascriptInterface
    public void sendData(String data) {
        //save data as file
    }
}