在我的应用程序中,我允许用户使用 Intent.ACTION_SEND 与外部应用共享文件。我的文件是加密的,所以在我可以共享其中一个文件之前,我需要解密它并将其存储在应用程序内部存储中。之后,我共享文件Uri以发送文件。出于安全问题,我想在外部应用程序使用它或用户取消操作后从内部存储中删除该文件。
简短:在我的项目中,我解密所选文件并保存到内部存储位置Temp文件夹/目录。之后,为这些文件生成uris的arraylist并分享'usri'的arraylist。
这里的主要问题是在共享文件成功/失败后删除临时文件夹。
我使用下面的代码来共享文件
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。并在完成共享文件之前调用它。
答案 0 :(得分:0)
您可以从活动onResume()
的sdcard中删除该文件。因此,当用户从外部应用程序按回来时,它将关闭,您的应用程序将从打开它的同一活动中恢复。
但我个人并不认为您的方法是解决安全问题的最佳方法。知识渊博的任何人都可以在解密的文件打开时复制它们。