package Ġcom . ge ot ab . mobile . sdk Ċ Ċ import Ġandroid . app . Download Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Environment Ċ import Ġandroid . webkit . Cookie Manager Ċ import Ġandroid . webkit . Download Listener Ċ import Ġandroid . webkit . URL Util Ċ import Ġandroid . widget . Toast Ċ import Ġcom . ge ot ab . mobile . sdk . permission . Permission Ċ import Ġcom . ge ot ab . mobile . sdk . permission . Permission Delegate Ċ import Ġcom . ge ot ab . mobile . sdk . permission . Permission Helper Ċ Ċ class ĠDownload Files ( val Ġcontext : ĠContext , Ġpermission Delegate : ĠPermission Delegate ) Ġ: ĊĠĠĠ ĠDownload Listener Ġ{ ĊĠĠĠ Ġprivate Ġval Ġpermission Helper : ĠPermission Helper Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠPermission Helper ( context , Ġpermission Delegate ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Download Start ( ĊĠĠĠĠĠĠĠ Ġurl : ĠString ?, ĊĠĠĠĠĠĠĠ Ġuser Agent : ĠString ?, ĊĠĠĠĠĠĠĠ Ġcontent Disposition : ĠString ?, ĊĠĠĠĠĠĠĠ Ġmime type : ĠString ?, ĊĠĠĠĠĠĠĠ Ġcontent Length : ĠLong ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermission Helper . check Permission ( array Of ( Permission . WRITE _ EXTERNAL )) Ġ{ Ġis Success Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Download ( url , Ġuser Agent , Ġcontent Disposition , Ġmime type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Permission Ġdenied Ġto Ġdownload ĠFile ", ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Download ( url , Ġuser Agent , Ġcontent Disposition , Ġmime type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Download ( ĊĠĠĠĠĠĠĠ Ġurl : ĠString ?, ĊĠĠĠĠĠĠĠ Ġuser Agent : ĠString ?, ĊĠĠĠĠĠĠĠ Ġcontent Disposition : ĠString ?, ĊĠĠĠĠĠĠĠ ĠmimeType : ĠString ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠDownload Manager . Request ( Uri . parse ( url )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . set MimeType ( mime Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . add Request Header (" cookie ", ĠCookie Manager . getInstance (). get Cookie ( url )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . add Request Header (" User - Agent ", Ġuser Agent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . setDescription (" Downloading Ġfile ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= ĠURL Util . guess FileName ( url , Ġcontent Disposition , ĠmimeType ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . setTitle ( fileName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . set Notification Visibility ( Download Manager . Request . VIS IBILITY _ VISIBLE _ NOTIFY _ COMPLETED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . set Destination In External Public Dir ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEnvironment . DIRECTORY _ DOWNLOAD S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfileName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdm Ġ= Ġcontext . getSystem Service ( Context . DOWNLOAD _ SERVICE ) Ġas ĠDownload Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdm . enqueue ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġcontext . getString ( R . string . download ing , ĠfileName ), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġcontext . getString ( R . string . download _ error ), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ