package Ġcom . web add ict ed . kotlin project . global . misc Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Environment Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . webkit . Value Callback Ċ import Ġandroid . webkit . Web Chrome Client Ċ import Ġandroid . webkit . WebView Ċ import Ġcom . web add ict ed . kotlin project . global . common . Lg Ċ import Ġcom . web add ict ed . kotlin project . view . activity . WebView Activity Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* ĊĊ Ċ class ĠWeb Chrome Client Test ( private Ġvar Ġmy Activity : ĠActivity ?) Ġ: Web Chrome Client (){ ĊĠĠĠ Ġ// ĠFor ĠAndroid Ġ 5 . 0 + ĊĠĠĠ Ġoverride Ġfun Ġon Show FileChooser ( ĊĠĠĠĠĠĠĠ Ġview : ĠWebView , ĊĠĠĠĠĠĠĠ ĠfilePath : ĠValue Callback < Array < Uri >>, ĊĠĠĠĠĠĠĠ Ġfile Chooser Params : ĠFile Chooser Params ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my Activity Ġis ĠWebView Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweb Activity Ġ= Ġmy Activity Ġas ĠWebView Activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDouble Ġcheck Ġthat Ġwe Ġdon 't Ġhave Ġany Ġexisting Ġcallbacks ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( web Activity . m Upload Message Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb Activity . m Upload Message ?. on Receive Value ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( exp : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL g . d (" TAG ","" + exp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Activity . m Upload Message Ġ= ĠfilePath ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL g . e (" File Co oser Params Ġ=> Ġ", ĠfilePath . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Activity . m Camera Photo Path Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtake Picture Intent : ĠIntent ? Ġ= ĠIntent ( Media Store . ACTION _ IMAGE _ CAPTURE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( take Picture Intent !!. resolve Activity ( web Activity . package Manager ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe ĠFile Ġwhere Ġthe Ġphoto Ġshould Ġgo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġphoto File : ĠFile ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphoto File Ġ= Ġcreate Image File () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtake Picture Intent . putExtra (" Photo Path ", Ġweb Activity . m Camera Photo Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠError Ġoccurred Ġwhile Ġcreating Ġthe ĠFile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL g . e (" TAG ", Ġ" Unable Ġto Ġcreate ĠImage ĠFile Ġ$ ex ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠContinue Ġonly Ġif Ġthe ĠFile Ġwas Ġsuccessfully Ġcreated ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( photo File Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb Activity . m Camera Photo Path Ġ= Ġ" file :" Ġ+ Ġphoto File . absolute Path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtake Picture Intent . putExtra ( Media Store . EXTRA _ OUTPUT , ĠUri . from File ( photo File )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtake Picture Intent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Selection Intent Ġ= ĠIntent ( Intent . ACTION _ GET _ CONTENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Selection Intent . add Category ( Intent . CATEGORY _ OP ENABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Selection Intent . putExtra ( Intent . EXTRA _ ALLOW _ MULTIPLE , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Selection Intent . type Ġ= Ġ" image /* " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Array : ĠArray < Intent ?> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent Array Ġ= Ġif Ġ( take Picture Intent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( take Picture Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf Null s ( 2 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcho oser Intent Ġ= ĠIntent ( Intent . ACTION _ CH OO SER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser Intent . putExtra ( Intent . EXTRA _ INT ENT , Ġcontent Selection Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser Intent . putExtra ( Intent . EXTRA _ TITLE , Ġ" Image ĠCho oser ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser Intent . putExtra ( Intent . EXTRA _ INITIAL _ INT ENTS , Ġintent Array ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Activity . startActivity For Result ( Intent . create Chooser ( cho oser Intent , Ġ" Select Ġimages "), Ġweb Activity . INPUT _ FILE _ REQUEST _ CODE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcreate Image File (): ĠFile Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġan Ġimage Ġfile Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Stamp Ġ= ĠSimpleDateFormat (" yyyy MM dd _ HH mm ss "). format ( Date ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage FileName Ġ= Ġ" JPEG _" Ġ+ Ġtime Stamp Ġ+ Ġ"_" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstorage Dir Ġ= ĠEnvironment . get External Storage Public Directory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEnvironment . DIRECTORY _ PI CTURE S ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFile . create TempFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage FileName , Ġ/* Ġprefix Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ". jpg ", Ġ/* Ġsuffix Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstorage Dir ĠĠĠĠĠ Ġ/* Ġdirectory Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ}