Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android电子邮件SQLite数据库_Android - Fatal编程技术网

Android电子邮件SQLite数据库

Android电子邮件SQLite数据库,android,Android,我希望能够通过电子邮件发送我在应用程序中使用的SQLite数据库,作为用户可以执行的备份形式。我的当前代码如下,数据库在电子邮件意图中显示为附件,电子邮件将发送,但附件未发送 File file = new File(Environment.getDataDirectory(), "/data/com.app/databases/databaseName"); Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Inte

我希望能够通过电子邮件发送我在应用程序中使用的SQLite数据库,作为用户可以执行的备份形式。我的当前代码如下,数据库在电子邮件意图中显示为附件,电子邮件将发送,但附件未发送

File file = new File(Environment.getDataDirectory(), "/data/com.app/databases/databaseName");
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{""});
intent.putExtra(Intent.EXTRA_SUBJECT, "Backup");
intent.putExtra(Intent.EXTRA_TEXT, "");
intent.setType("application/octet-stream");
intent.putExtra(Intent.EXTRA_STREAM, file.toURI());
startActivity(Intent.createChooser(intent, "Send Email"));

我记得很久以前我就遇到过这个问题。我不确定我做了什么来修复它,但我的工作代码看起来像这样

File root = Environment.getExternalStorageDirectory();
String fileName = "foo.txt";
  if (root.canWrite()) {
    attachment = new File(root, fileName);
  }
email.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(attachment));
startActivity(Intent.createChooser(email, "Send Email"));
我确实记得,由于我使用SD卡存储,如果我仍然通过USB连接到我的计算机,它将不会发送我的附件(因为它使SD卡保持安装状态并处于忙碌状态)。一旦我拔下USB连接,一切正常。

看这个链接:你需要传递URI

解决办法是:

文件必须作为附件附上

sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/mysong.mp3"));
你需要额外的/in文件://(在堆栈溢出帖子中丢失),否则GMail会在发送之前丢弃附件,声明文件路径错误


因此,您需要额外的/在文件中,并且它不会被删除。。。。希望这有助于在尝试发送电子邮件之前将数据库导出到sd卡。无法从应用程序的数据/数据文件夹中添加附件。这些文件是应用程序的私有文件


上面的SO答案很好地展示了如何复制DB文件,将其作为附件发送电子邮件,然后删除复制的文件。查看。

您是否有机会在这里发布正确的工作代码,并附上@dfetter88的建议?