我看到处处都找不到,我无法找到如何做到这一点;我很沮丧...从应用程序内发送SQLite数据库文件
我如何允许用户发送(通过电子邮件)的SQLite数据库文件?
就是这样。我可以将其转换为字符串并附加,但我想发送实际的数据库文件。而且我正在使用一款没有外置SD卡的新手机。
该应用程序只是用户填写的表单,然后将其保存到SQLite数据库。这很奇妙。就像将数据库打印到字符串(文本)然后发送它一样。但是,我希望用户通过电子邮件发送实际的数据库文件(这样我就可以使用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);
}
要“获取”db文件的Java代码?它主要是用户输入文本,复选框等,所以它不是那么大。 –
虽然我仍然对电子邮件持谨慎态度,但一些电子邮件客户端和服务器对于允许的数据量有限制等。如果您可以使用Web服务作为首选路由,如果不是,那么您正在查看电子邮件或FTP等 – Harry
我们有我们自己的电子邮件客户端和服务器,所以它没关系。该文件非常小(实际文本很少)。但我似乎无法得到实际的数据库文件发送。哎呀,我甚至不能参考它。我现在很沮丧。 –