下載文件處理

Android下載了文件,如何讓用戶更好的處理,用戶行為可分為三種,一是直接打開下載的文件,二是分享下載的文件,三是下載后自己去文件夾中找。

  1. 打開文件可分為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, "打開文件夾"))
  1. 分享,這個直接調(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)
            }
        }
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容