0

下面的所有代码都在 BackupRestoreActivity.kt

class BackupRestoreActivity : AppCompatActivity(), ActivityCompat.OnRequestPermissionsResultCallback {.....

Intent 将数据库文件的副本附加到电子邮件中。数据库文件位于临时位置。电子邮件完成后,活动结果回调应开始从其临时位置删除数据库文件。

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    startEmailActivity = registerForActivityResult(StartActivityForResult()
    ) { result :ActivityResult ->
        if (result.resultCode == RESULT_OK) {
            val file = File(mediaStorageDir, backupFileName)
            file.delete()
        }
    } .......

// Attach backup file to default email
private fun composeEmail(dirPath :File, backupFileName :String) {

    val intent = Intent(Intent.ACTION_SENDTO).apply {
        data = Uri.parse("mailto:") // only email apps should handle this

        putExtra(Intent.EXTRA_EMAIL, "")
        putExtra(Intent.EXTRA_SUBJECT, "Fragments backup attached")
        putExtra(Intent.EXTRA_TEXT, ":)")
        putExtra(Intent.EXTRA_STREAM, Uri.parse("file://$dirPath/$backupFileName"))
    }

    startEmailActivity.launch(intent)
    return
}

电子邮件在 Gmail 中创建,并附有备份文件。我发送电子邮件但当我的应用程序恢复时它不会在 BackupRestoreActivity 恢复(运行 ActivityResult 的 File.delete(),如上面的第一个代码块所示。)相反,我的应用程序在其主屏幕 MainActivity 恢复。文件删除不会发生。

我在 IDE 中使用 API 28 仿真,并使用设备文件资源管理器检查了文件位置。备份副本文件被创建。电子邮件步骤工作正常。任何关于为什么我没有成功使用 ActivityResult 的 File.delete() 的想法将不胜感激!

4

0 回答 0