package Ġcom . p ise y . flutter _ native _ player . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context Wrapper Ċ import Ġjava . io .* Ċ import Ġjava . net . Http URLConnection Ċ import Ġjava . net . URL Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . Callable Ċ Ċ class ĠDownload File Ġ( private Ġval Ġcontext : ĠContext , private Ġval Ġurl : ĠString ) Ġ: ĠCallable < String ?> Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġuri : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun Ġcall (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSome Ġlong Ġrunning Ġtask ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġu Ġ= ĠURL ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconn Ġ= Ġu . open Connection () Ġas ĠHttp URLConnection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Length : ĠInt Ġ= Ġconn . content Length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstream Ġ= ĠData InputStream ( u . open Stream ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( content Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstream . read Fully ( buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstream . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Wrapper Ġ= Ġ ĠContext Wrapper ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirectory Ġ= Ġcontext Wrapper . get Dir ( context . files Dir . name , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( directory , Ġ"${ UUID . randomUUID ()}. ${ url . extension () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf os Ġ= ĠFileOutputStream ( file , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf os . write ( buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf os . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri Ġ= Ġfile . toString () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠFileNotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġuri ĊĠĠĠ Ġ} Ċ Ċ }