Android下載了文件,如何讓用戶更好的處理,用戶行為可分為三種,一是直接打開下載的文件,二是分享下載的文件,三是下載后自己去文件夾中找。
- 打開文件可分為2種方式,
- app內(nèi)部打開文件,這個需要自己去實現(xiàn)
- 調(diào)用系統(tǒng)打開文件
//打開文件
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, "打開文件夾"))
- 分享,這個直接調(diào)用系統(tǒng)分享文件
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.去文件夾找,我們現(xiàn)在app一般都不會再申請文件的讀寫權(quán)限。低版本好像只能保存到私有目錄,不能放到下載里面去。導致很多用戶找不到。一般這種情況讓用戶自己選擇目錄保存位置,下面是用戶選擇保存位置方式
private val createDocumentLauncher = registerForActivityResult(
ActivityResultContracts.CreateDocument("application/pdf")
) { uri ->
uri?.let {
saveFileToUri(uri)
}
}
//調(diào)起系統(tǒng)方式"invoice.pdf"默認名稱
createDocumentLauncher.launch("invoice.pdf")
private fun saveFileToUri(uri: Uri) {
//復制下載好的內(nèi)容
currentActivityRef.get()?.contentResolver?.openOutputStream(uri)?.use { output ->
FileInputStream(pdfFile).use { input ->
input.copyTo(output)
}
}
}