【发布时间】:2016-04-09 08:59:56
【问题描述】:
我到处寻找,但我不知道如何做到这一点;我很沮丧...
如何允许用户(通过电子邮件)发送 SQLite db 文件?
简而言之就是这样。我可以将其转换为字符串并附加,但我想发送实际的 db 文件。我正在使用没有外部 SD 卡的新手机。
应用程序只是用户填写的表单,然后将其保存到 SQLite 数据库。这非常有效。将数据库打印到字符串(文本)然后发送它也是如此。但是,我希望用户通过电子邮件发送实际的 db 文件(这样我就可以使用 C# 来读取、处理它并“重新创建”一个真实的表单)。
或者我应该使用 SQLite 以外的东西吗?
编辑:这是我所做的。它似乎有效,但实际上并没有附加文件,或者文件是“空白/空”。调试日志说没有这样的文件或目录。调试日志截图在这里:http://imgur.com/oyzdtuJ
//trying again to send a SQL db file
//this seems to work and shows that it's attaching a file, but the file is empty so it won't attach
//gmail will say "cant attach empty file"
private void sendFile(String email){
File myFile = this.getFileStreamPath("testresults.db");
if(myFile != null) {
Log.d("LOG PRINT SHARE DB", "File Found, Here is file location: " + myFile.toString());
}else {
Log.w("Tag", "file not found!");
}
Uri contentUri = FileProvider.getUriForFile(this, "com.columbiawestengineering.columbiawest.MainActivity", myFile);
Log.d("LOG PRINT SHARE DB", "contentUri got: here is contentUri: " + contentUri.toString());
//grant permision for app with package "com.columbiawestengineering.columbiawest", eg. before starting other app via intent
this.grantUriPermission("com.columbiawestengineering.columbiawest", contentUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
Log.d("LOG PRINT SHARE DB", "permission granted, here is contentUri: " + contentUri.toString());
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("application/octet-stream");
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "blaaa subject");
String to[] = { email };
shareIntent.putExtra(Intent.EXTRA_EMAIL, to);
shareIntent.putExtra(Intent.EXTRA_TEXT, "blah blah message");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
startActivityForResult(Intent.createChooser(shareIntent, "Send mail..."), 1252);
//revoke permisions
this.revokeUriPermission(contentUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
【问题讨论】:
标签: sqlite android-studio