我有一个带有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应用程序将无法在浏览器上运行。
答案 0 :(得分:1)
我找到的解决方案是检测javascript是在Android应用程序或浏览器中运行的(通过向用户代理添加字符串)。
在Android应用中,我发送变量textToWrite
(通常会进入blob)到java。
在javascript中:
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
}
}