在我的应用程序中,我允许用户使用 Intent.ACTION_SEND 与外部应用程序共享文件。我的文件已加密,因此在我可以共享其中一个文件之前,我需要对其进行解密并将其存储在应用程序内部存储中。之后,我共享文件 Uri 以发送文件。出于安全问题,我想在外部应用程序使用该文件或用户取消操作后将其从内部存储中删除。
简介:在我的项目中,我解密所选文件并保存到内部存储位置 Temp 文件夹/目录。之后为该文件生成 uris 的数组列表并共享 'usri's 的数组列表。
这里的主要问题是在共享文件成功/失败后删除临时文件夹。
我使用下面的代码来共享文件
private void startShareIntent(ArrayList<Uri> uris) {
Intent share = new Intent(Intent.ACTION_SEND_MULTIPLE);
share.setType("audio/*");
share.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
startActivityForResult(Intent.createChooser(share, "Share audio File(s)"),SHARE_AUDIO_FILES_CODE);
}
获取onActivity结果
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if(requestCode==SHARE_AUDIO_FILES_CODE)
{
//TODO delete decrypted files when success
}
}
if(resultCode==RESULT_CANCELED)
{
//TODO delete decrypted files when failure.
}
}
但这里总是 resultCode 只返回 RESULT_CANCELED。并在共享文件完成之前调用。
最佳答案
您可以在 Activity 的 onResume()
上从 sdcard 中删除文件。因此,当用户从外部应用程序返回时,它将关闭,您的应用程序将从打开它的同一 Activity 恢复。
但我个人并不认为您的方法是解决安全问题的最佳方法。任何知识不多的人都可以在文件打开时复制解密文件。
关于android - 何时在 Android 中使用 Intent.ACTION_SEND 删除与外部应用共享的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27225809/