我构建了一个WebView应用程序,它将一些信息存储在DOM存储(localstorage)中。作为应用程序的一部分,我想将该数据导出到.csv文件或电子邮件(附件为.csv等)。
我能够以.csv格式获取数据,但我不确定如何导出或发送包含数据的电子邮件。
单击“导出”按钮后,我尝试了以下操作:
var currentData = getHistorySummary("myObject");
var dataArray = [];
for (var i = 0; i < currentData.length; i++) {
dataArray.push(JSON.parse(currentData[i]));
}
dataArray.sortBy('id');
var csv = convertJSONtoCSV(dataArray);
var csvContent = "data:text/csv;charset=utf-8,";
csvContent += csv;
var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "my_data.csv");
window.open(encodedUri);
然而此时没有任何反应,我收到以下警告:
无法调用determinVisibility() - 从未看到pid的连接:27146
有没有更好的方法来“导出”这些信息,或者我错过了什么?
答案 0 :(得分:1)
我最终做了以下操作(.csv内容在电子邮件正文中发送):
mWebView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView webView, String url) {
if (url.startsWith("data:text/csv")) {
Intent i = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:someone@example.com"));
i.putExtra(android.content.Intent.EXTRA_TEXT, URLDecoder.decode(url));
startActivity(i);
}
return true;
}
});
这不是理想的,但对于我正在研究的项目,它会做的。
答案 1 :(得分:0)
通过提供文件名和文件路径来尝试此操作 -
try
{
String fileName = URLEncoder.encode(yourfilename, "UTF-8");
String PATH = Environment.getExternalStorageDirectory()+"/"+fileName.trim().toString();
Uri uri = Uri.parse("file://"+PATH);
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_EMAIL, "");
i.putExtra(Intent.EXTRA_SUBJECT,"android - email with attachment");
i.putExtra(Intent.EXTRA_TEXT,"");
i.putExtra(Intent.EXTRA_STREAM, uri);
i.setType("text/csv");
context.startActivity(Intent.createChooser(i, "Select application"));
}
catch (UnsupportedEncodingException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
来源链接here
答案 2 :(得分:0)
您可以使用[WebView#addJascriptInterface()](http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object,java.lang.String))并发布一个发送电子邮件的方法,也可能也传递localstorage中的数据。