package Ġyet . util . app Ċ Ċ import Ġandroid . app . Download Manager . Request Ċ import Ġandroid . net . Uri Ċ import Ġcom . google . gson . JsonObject Ċ import Ġyet . database . Map Table Ċ import Ġyet . file . Sd App File Ċ import Ġyet . json . getValue Ċ import Ġyet . json . setValue Ċ import Ġyet . util . log . log d Ċ import Ġjava . io . File Ċ Ċ class ĠDownload Task ( val Ġjo : ĠJsonObject ) Ġ{ ĊĊ ĉ var Ġid : ĠLong Ġby Ġjo Ċ ĉ var Ġurl : ĠString Ġby Ġjo Ċ ĉ var Ġaction : ĠString Ġby Ġjo ĊĊ ĉ var Ġfilepath : ĠString Ġby Ġjo ĊĊĊ ĉ fun Ġprocess Action ( di : ĠDownload Info ) Ġ{ Ċĉ ĉ val Ġfile Ġ= ĠFile ( filepath ) Ċ // ĉ ĉ val Ġfile Ġ= ĠFile ( di . local Uri !!. path ) Ċĉ ĉ if Ġ( action Ġ== ĠACTION _ INSTALL L ) Ġ{ Ċĉĉ ĉ App . install A pk ( file ) Ċĉ ĉ } Ċ ĉ } ĊĊĊ ĉ comp anion Ġobject Ġ{ Ċĉ ĉ val Ġdown Map Ġ= ĠMap Table (" download Tasks ") ĊĊĉ ĉ val ĠACTION _ INSTALL L Ġ= Ġ" action Install " ĊĊĉ ĉ fun ĠonComplete ( di : ĠDownload Info ) Ġ{ ĊĊĉĉ ĉ val Ġjo Ġ= Ġdown Map . get JsonObject ("${ di . id }") Ċĉĉ ĉ down Map . remove ("${ di . id }") Ċĉĉ ĉ if Ġ( jo Ġ!= Ġnull ) Ġ{ Ċĉĉĉ ĉ val Ġtask Ġ= ĠDownload Task ( jo ) Ċĉĉĉ ĉ if Ġ( di . success ) Ġ{ Ċĉĉĉĉ ĉ task . process Action ( di ) Ċĉĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉĉ ĉ log d (" ä¸ĭè½½ å¤±è´¥ Ġ", Ġtask . url ) Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉ ĉ } ĊĊĉ ĉ fun Ġdownload And Install ( url : ĠString , Ġtitle : ĠString , Ġext Name : ĠString , Ġdesc : ĠString Ġ= Ġ"") Ġ{ Ċĉĉ ĉ val Ġtask Ġ= ĠDownload Task ( JsonObject ()) Ċĉĉ ĉ task . url Ġ= Ġurl Ċĉĉ ĉ task . action Ġ= ĠACTION _ INSTALL L ĊĊĉĉ ĉ val Ġfile Ġ= ĠS d App File . temp File ( ext Name ) Ċĉĉ ĉ task . filepath Ġ= Ġfile . absolute Path ĊĊĉĉ ĉ val Ġdm Ġ= ĠApp . download Manager Ċĉĉ ĉ val Ġreq Ġ= ĠRequest ( Uri . parse ( url )) Ċĉĉ ĉ if Ġ( title . isNotEmpty ()) Ġ{ Ċĉĉĉ ĉ req . setTitle ( title ) Ċĉĉ ĉ } Ċĉĉ ĉ req . set Destination Uri ( Uri . from File ( file )) Ċĉĉ ĉ if Ġ( desc . isNotEmpty ()) Ġ{ Ċĉĉĉ ĉ req . setDescription ( desc ) Ċĉĉ ĉ } Ċĉĉ ĉ task . id Ġ= Ġdm . enqueue ( req ) ĊĊĉĉ ĉ down Map . put ( task . id . toString (), Ġtask . jo . toString ()) ĊĊĉ ĉ } ĊĊ ĉ } Ċ }