在 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
}
}
我有一个带有网络视图的 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
}
}