Android 发送邮件时添加SQLite db作为附件

Android 发送邮件时添加SQLite db作为附件,android,sqlite,object,gmail,Android,Sqlite,Object,Gmail,我想邮寄数据库的备份。是否可以在不将sql db保存为平板电脑上的文件的情况下执行此操作?因此,直接添加SQLiteDatabase对象作为附件 现在我正在将数据库保存为文件,并将其作为附件发送 代码: 不是通过意图。数据库文件位于应用程序专用的内部存储器中,因此必须将其复制到外部位置,以便使用该意图的应用程序能够读取它。你需要实现你自己的电子邮件代码-搜索应该会找到一些你可以使用的库/源。另一种方法是实现ContentProvider,让电子邮件应用程序访问你的文件。但这听起来对我来说太过分了

我想邮寄数据库的备份。是否可以在不将sql db保存为平板电脑上的文件的情况下执行此操作?因此,直接添加SQLiteDatabase对象作为附件

现在我正在将数据库保存为文件,并将其作为附件发送

代码:


不是通过意图。数据库文件位于应用程序专用的内部存储器中,因此必须将其复制到外部位置,以便使用该意图的应用程序能够读取它。你需要实现你自己的电子邮件代码-搜索应该会找到一些你可以使用的库/源。另一种方法是实现ContentProvider,让电子邮件应用程序访问你的文件。但这听起来对我来说太过分了。只要把它放在android/data//文件夹中,在你有时间删除它之前,它将保持足够的隐藏状态。我想在邮寄后从外部存储中删除数据库。是否有可能知道电子邮件实际发送的时间?因此,如果我理解正确,出于安全原因,不可能从内部存储中获取数据库并发送邮件,但我可以将数据库复制到外部存储,然后发送邮件?第二个选项不是更不安全吗?无法知道电子邮件何时发送。在完成该过程之前,用户可以让共享选择器或其电子邮件客户端打开任意时间。正如Budius所建议的,只要将文件放在一个相当模糊的地方,并在每次应用程序启动时清除该目录即可。
 public void sendMail(String filepath) {

        String[] recipients = {"mail adres"};
        Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:"));

        // prompts email clients only
        email.setType("message/rfc822");

        email.putExtra(Intent.EXTRA_EMAIL, recipients);
        email.putExtra(Intent.EXTRA_SUBJECT, "DBBackup");
        email.putExtra(Intent.EXTRA_TEXT, "DBBackupB");
        email.putExtra(Intent.EXTRA_STREAM, getFile(filepath));
        activity.startActivity(Intent.createChooser(email, "Send email"));


    }