【发布时间】:2021-07-14 09:29:28
【问题描述】:
我有以下代码用于导出房间数据库,然后将其附加到电子邮件中。目前,用户首先必须选择他们希望数据保存在哪里才能附加。
有没有一种方法可以做到这一点,而无需先询问用户将数据库保存在哪里?
这是我的代码:
fun exportDatabase() {
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT)
intent.type = "*/*" // this line is a must when using ACTION_CREATE_DOCUMENT
startActivityForResult(
intent,
DATABASE_EXPORT_CODE
)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
DATABASE_EXPORT_CODE -> {
val userChosenUri = data?.data
val inStream = getDatabasePath("app_database").inputStream()
val outStream = userChosenUri?.let { contentResolver.openOutputStream(it) }
inStream.use { input ->
outStream.use { output ->
output?.let { input.copyTo(it) }
Toast.makeText(this, "Data exported successfully", Toast.LENGTH_LONG).show()
val emailIntent = Intent(Intent.ACTION_SEND)
//Set type to email
emailIntent.type = "vnd.android.cursor.dir/email"
var toEmail: String = "whatever@gmail.com"
emailIntent.putExtra(Intent.EXTRA_EMAIL, toEmail)
emailIntent.putExtra(Intent.EXTRA_STREAM, userChosenUri)
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Data for Training Log")
startActivity(Intent.createChooser(emailIntent, "Send Email"))
}
}
}
else ->
Log.d("D001", "onActivityResult: unknown request code")
}
}
【问题讨论】:
标签: android kotlin uri android-room android-fileprovider