下载文件处理

Android下载了文件,如何让用户更好的处理,用户行为可分为三种,一是直接打开下载的文件,二是分享下载的文件,三是下载后自己去文件夹中找。

  1. 打开文件可分为2种方式,
  • app内部打开文件,这个需要自己去实现
  • 调用系统打开文件
        //打开文件
        val uri = FileUtils.getFileUri(currentActivityRef.get(),sourceFile)
        val intent = Intent(Intent.ACTION_VIEW).apply {
            setDataAndType(uri, "*/*")
            flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
        }
        currentActivityRef.get()?.startActivity(Intent.createChooser(intent, "打开文件夹"))
  1. 分享,这个直接调用系统分享文件
        val uri = FileUtils.getFileUri(currentActivityRef.get(),sourceFile)
        //分享文件
        val intent = Intent(Intent.ACTION_SEND)
        intent.type = "application/pdf"
        intent.putExtra(Intent.EXTRA_STREAM, uri)
        currentActivityRef.get()?.startActivity(Intent.createChooser(intent, "分享PDF"))

3.去文件夹找,我们现在app一般都不会再申请文件的读写权限。低版本好像只能保存到私有目录,不能放到下载里面去。导致很多用户找不到。一般这种情况让用户自己选择目录保存位置,下面是用户选择保存位置方式

private val createDocumentLauncher = registerForActivityResult(
        ActivityResultContracts.CreateDocument("application/pdf")
    ) { uri ->
        uri?.let {
            saveFileToUri(uri)
        }
    }

//调起系统方式"invoice.pdf"默认名称
createDocumentLauncher.launch("invoice.pdf")


private fun saveFileToUri(uri: Uri) {

//复制下载好的内容        
currentActivityRef.get()?.contentResolver?.openOutputStream(uri)?.use { output ->
            FileInputStream(pdfFile).use { input ->
                input.copyTo(output)
            }
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容