package Ġapp . me lon . util . storage Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġandroid . webkit . MimeType Map Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton ĊĊ Ċ @ Singleton Ċ class ĠStorage Handler Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġcopy File To Cache Dir ( uri : ĠUri , Ġfilename : ĠString Ġ= Ġ" cache "): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresolver Ġ= Ġcontext . content Resolver ĊĠĠĠĠĠĠĠ Ġval Ġmedia Type Ġ= Ġresolver . getType ( uri ) ĊĠĠĠĠĠĠĠ Ġval Ġfile Extension Ġ= ĠMime TypeMap . get Singleton (). getExtension From MimeType ( media Type ) ĊĠĠĠĠĠĠĠ Ġval ĠoutputFile Ġ= ĠFile ( context . cacheDir , Ġ"$ filename .$ file Extension ") ĊĠĠĠĠĠĠĠ Ġresolver . open InputStream ( uri ). use Ġ{ Ġinput Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠoutputStream Ġ= ĠFileOutputStream ( outputFile ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . use Ġ{ Ġoutput Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( 4 Ġ* Ġ 1 0 2 4 ) Ġ// Ġbuffer Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbyte Count Ġ= Ġinput ?. read ( buffer ) Ġ?: Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( byte Count Ġ< Ġ 0 ) Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . write ( buffer , Ġ 0 , Ġbyte Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . flush () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠoutputFile ĊĠĠĠ Ġ} Ċ }