Android下载了文件,如何让用户更好的处理,用户行为可分为三种,一是直接打开下载的文件,二是分享下载的文件,三是下载后自己去文件夹中找。
- 打开文件可分为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, "打开文件夹"))
- 分享,这个直接调用系统分享文件
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)
}
}
}