【发布时间】:2023-03-10 21:17:01
【问题描述】:
在我的应用程序中,我允许用户使用 Intent.ACTION_SEND 与外部应用程序共享文件。我的文件已加密,因此在我可以共享其中一个文件之前,我需要对其进行解密并将其存储在应用程序内部存储中。之后我共享文件 Uri 以发送文件。出于安全问题,我想在外部应用程序使用文件或用户取消操作后从内部存储中删除文件。
简介:在我的项目中,我解密选定的文件并保存到内部存储位置临时文件夹/目录。之后为该文件生成uris的arraylist并共享'usri's的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。并在共享文件完成之前调用它。
【问题讨论】:
-
hmmm 以 android 方式进行操作:developer.android.com/reference/android/support/v4/content/…
-
@Selvin 感谢您的回复。在我的项目中,我解密选定的文件并保存到内部存储位置临时文件夹/目录中。之后为该文件生成uris的arraylist并共享'usri's的arraylist。这里的主要问题是在共享文件成功/失败后删除临时文件夹。
标签: android android-intent share