package Ġcom . tl z . test Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġcom . tl z . rx commons .* Ċ import Ġcom . tl z . rx commons . http . Progress Callback Ċ import Ġcom . tl z . rx commons . http . Rx Downloader Ċ import Ġcom . tl z . rx commons . permission . Rx Permissions Ċ import Ġcom . tl z . rx commons . test . R Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġjava . lang . Exception Ċ import Ġjava . util . concurrent . TimeUnit ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrx Per mis son s : ĠRx Permissions ĊĊĠĠĠ Ġprivate Ġvar Ġis Request ing Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġdir Ġ= Ġ( external Cache Dir Ġ?: ĠEnvironment . get External Storage Directory ()). absolute Path ĊĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= Ġ" algorithm _ temp . txt " ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġval Ġok httpClient Ġ= ĠOk HttpClient . Builder (). build () Ċ // ĠĠĠĠĠĠĠ ĠRx Downloader . newInstance ( ok httpClient ). download (" https :// downloads . atlassian . com / software / s ourc etree / windows / ga / Source Tree Setup - 2 . 4 . 8 . 0 . exe ", Ġdir , ĠfileName , ĠProgress Callback ({ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" MainActivity ", Ġ" total Ġsize Ġ= Ġ$ it ") Ċ // ĠĠĠĠĠĠĠ Ġ}, Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" MainActivity ", Ġ" download Ġprogress Ġ= Ġ$ it ") Ċ // ĠĠĠĠĠĠĠ Ġ})) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" MainActivity ", Ġ" download Ġfile Ġsuccessful ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" MainActivity ", Ġ" download Ġfile Ġfailed ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠ Ġon Event < String >( MainActivity :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" æĪĳ æİ¥åıĹ åĪ° æ¶Īæģ¯ åķ ¦ $ it ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrx Per mis son s Ġ= ĠRx Permissions . with ( this ) ĊĠĠĠĠĠĠĠ Ġpost Delay (" ces h 1 ", Ġ 2 0 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Permission (){ ĊĠĠĠĠĠĠĠ ĠLog . d (" MainActivity ", Ġ" do Ġrequest Permission ") ĊĠĠĠĠĠĠĠ Ġis Request ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġrx Per mis son s . request ( array Of ( Manifest . permission . WRITE _ EXTERNAL _ STORAGE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. delay ( 1 0 0 0 , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do After Terminate Ġ{ Ġis Request ing Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" MainActivity ", Ġ" permission Ġrequest Ġsuccessful ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 2 0 0 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost ( MainActivity :: class , Ġ" this Ġis Ġa Ġtest Ġmsg ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" æĤ¨ å·² æĭ Ĵ ç»Ŀ äºĨ æĿĥéĻĲ ï¼Į 2 s åĲİ å°Ĩ å¼ĢåĲ¯ æĿĥéĻĲ è®¾ç½® çķĮéĿ¢ ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay On MainThread ( 2 , ĠTimeUnit . SECONDS ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Permission Setting Page () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Permission Setting Page (){ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠSettings . ACTION _ APPLICATION _ DETAILS _ SETTINGS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . from Parts (" package ", ĠpackageName , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ ĠLog . d (" MainActivity ", Ġ" do Ġon Resume ") ĊĠĠĠĠĠĠĠ Ġif (! is Request ing ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permission () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ