android - 何时在 Android 中使用 Intent.ACTION_SEND 删除与外部应用共享的文件

标签 android android-intent share

在我的应用程序中,我允许用户使用 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/

相关文章:

java - 如何选择正确的方式来获取Java中的相关上下文?

swift - 如何使用 Share Extensions Swift 共享包含标记的笔记

ios - 如何在共享扩展中呈现 ViewController?

android - Font- Awesome 在 Android 应用程序中不起作用

android - 在现有项目中从 support-lib-v7-appcompat 切换到 actionbarsherlock lib

android - 授予权限后如何从 onRequestPermissionsResult 中的 Intent 获取数据

android - 没有 Javascript 从移动 Web 到本地应用程序的 Facebook 共享?

android - RenderScript 内在输入和输出的相同分配?

android - Fragment 的 GetTag 返回空对象引用

java - 在 Android 设备上访问 SD 卡上的 PDF 文件