package Ġcom . y ww . utils . manager Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Download Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Environment Ċ import Ġandroid . support . annotation . Int Range Ċ import Ġandroid . support . annotation . Keep Ċ import Ġandroid . support . v 4 . util . Array Map Ċ import Ġcom . y ww . utils . extension .* Ċ import Ġcom . y ww . utils . util . Package Util Ċ import Ġcom . y ww . utils . util . Util Ċ Ċ /** Ċ Ġ* Ġ@ Author Ġ ĠW AV EN ING Ċ Ġ* Ġ@ Date ĠĠĠĠ 2 0 1 9 / 3 / 2 2 - 1 0 : 0 5 Ċ Ġ*/ Ċ @ Keep Ċ class ĠDownload Helper Ġprivate Ġconstructor () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġdownload Manager : ĠDownload Manager Ġ= ĊĠĠĠĠĠĠĠ ĠUtil . getApplication ()?. getSystem Service ( Context . DOWNLOAD _ SERVICE ) Ġas ĠDownload Manager ĊĠĠĠ Ġprivate Ġval Ġdownload Map : ĠArray Map < String , ĠLong > Ġ= ĠArray Map () ĊĊĠĠĠ Ġprivate Ġobject ĠH older Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠINSTANCE Ġ= ĠDownload Helper () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Keep ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval Ġinstance : ĠDownload Helper Ġ= ĠH older . INSTANCE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdownload ( ĊĠĠĠĠĠĠĠ Ġdownload Url : ĠString , Ġtitle : ĠString , ĠfileName : ĠString , Ġdescription : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Int Range ( from Ġ= ĠDOWN LOAD _ NOTIFICATION _ STYLE _ 0 , Ġto Ġ= ĠDOWN LOAD _ NOTIFICATION _ STYLE _ 3 ) Ġnotify Style : ĠInt , Ġ@ Int Range ( from Ġ= ĠNET WORK _ USAGE _ STYLE _ 0 , Ġto Ġ= ĠNET WORK _ USAGE _ STYLE _ 2 ) Ġnet Style : ĠInt ĊĠĠĠ Ġ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest : ĠDownload Manager . Request Ġ= ĠDownload Manager . Request ( Uri . parse ( download Url )) ĊĠĠĠĠĠĠĠ Ġrequest . setTitle ( title ) ĊĠĠĠĠĠĠĠ Ġrequest . setDescription ( description ) ĊĠĠĠĠĠĠĠ Ġrequest . set Notification Visibility ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( notify Style ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠDownload Manager . Request . VIS IBILITY _ VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠDownload Manager . Request . VIS IBILITY _ VISIBLE _ NOTIFY _ COMPLETED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠDownload Manager . Request . VIS IBILITY _ HIDDEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> ĠDownload Manager . Request . VIS IBILITY _ VISIBLE _ NOTIFY _ ONLY _ COMP LE TION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠDownload Manager . Request . VIS IBILITY _ VISIBLE _ NOTIFY _ COMPLETED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrequest . setVisible In Downloads Ui ( true ) ĊĠĠĠĠĠĠĠ Ġrequest . set Destination In External Public Dir ( Environment . DIRECTORY _ DOWNLOAD S , ĠfileName ) ĊĠĠĠĠĠĠĠ Ġrequest . set Allowed Network Types ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( net Style ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠDownload Manager . Request . NETWORK _ MOB ILE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠDownload Manager . Request . NETWORK _ WIFI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠDownload Manager . Request . NETWORK _ MOB ILE Ġor ĠDownload Manager . Request . NETWORK _ WIFI ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġenqueue Id Ġ= Ġdownload Manager . enqueue ( request ) ĊĠĠĠĠĠĠĠ Ġdownload Map [ download Url ] Ġ= Ġenqueue Id ĊĠĠĠĠĠĠĠ Ġreturn Ġenqueue Id ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Suppress Lint (" Switch Int Def ") ĊĠĠĠ Ġfun Ġdownload State Enabled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Util . get PackageManager (). getApplication Enabled Setting (" com . android . providers . downloads ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Manager . COMPONENT _ ENABLED _ STATE _ DISABLED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠPackage Manager . COMPONENT _ ENABLED _ STATE _ DISABLED _ USER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠPackage Manager . COMPONENT _ ENABLED _ STATE _ DISABLED _ UNT IL _ USED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Download Component Setting () Ġ{ ĊĠĠĠĠĠĠĠ Ġopen Setting (" com . android . providers . downloads ") ĊĠĠĠ Ġ} Ċ }