package Ġcom . github . dr jack y . image picker Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . github . dr jack y . image picker . constant . Image Provider Ċ import Ġcom . github . dr jack y . image picker . listener . Result Listener Ċ import Ġcom . github . dr jack y . image picker . util . Dialog Helper Ċ import Ġcom . github . flo rent 3 7 . inline activity result . kotlin . start For Result Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠCreate ĠImage ĠP icker ĠObject Ċ Ġ* Ċ Ġ* Ġ@ author ĠD hav al ĠP ate l Ċ Ġ* Ġ@ version Ġ 1 . 0 Ċ Ġ* Ġ@ since Ġ 0 4 ĠJanuary Ġ 2 0 1 9 Ċ Ġ*/ Ċ open Ġclass ĠImage Picker Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠDefault ĠRequest ĠCode Ġto ĠPick ĠImage ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREQUEST _ CODE Ġ= Ġ 2 4 0 4 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠRESULT _ ERROR Ġ= Ġ 6 4 ĊĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠEX TRA _ IMAGE _ PROVIDER Ġ= Ġ" extra . image _ provider " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠEX TRA _ IMAGE _ MAX _ SIZE Ġ= Ġ" extra . image _ max _ size " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠEX TRA _ C ROP Ġ= Ġ" extra . crop " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠEX TRA _ C ROP _ X Ġ= Ġ" extra . crop _ x " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠEX TRA _ C ROP _ Y Ġ= Ġ" extra . crop _ y " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠEX TRA _ C ROP _ O VAL Ġ= Ġ" extra . crop _ oval " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠEX TRA _ MAX _ WIDTH Ġ= Ġ" extra . max _ width " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠEX TRA _ MAX _ HEIGHT Ġ= Ġ" extra . max _ height " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠEX TRA _ SAVE _ DIRECTORY Ġ= Ġ" extra . save _ directory " ĊĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠEX TRA _ ERROR Ġ= Ġ" extra . error " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠEX TRA _ FILE _ PATH Ġ= Ġ" extra . file _ path " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠEX TRA _ MIME _ TYPES Ġ= Ġ" extra . mime _ types " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUse Ġthis Ġto Ġuse ĠImage Picker Ġin ĠActivity ĠClass ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġactivity ĠActivity ĠInstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġwith ( activity : ĠActivity ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBuilder ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUse Ġthis Ġto Ġuse ĠImage Picker Ġin ĠFragment ĠClass ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfragment ĠFragment ĠInstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġwith ( fragment : ĠFragment ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBuilder ( fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġerror Ġmessage Ġfrom Ġintent ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget Error ( data : ĠIntent ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġdata ?. getString Extra ( EXTRA _ ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" Unknown ĠError !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet ĠFile ĠPath Ġfrom Ġintent ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget FilePath ( data : ĠIntent ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata ?. getString Extra ( EXTRA _ FILE _ PATH ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet ĠFile Ġfrom Ġintent ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠgetFile ( data : ĠIntent ?): ĠFile ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġget FilePath ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( path Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFile ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠBuilder ( private Ġval Ġactivity : ĠActivity ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġfragment : ĠFragment ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ// ĠImage ĠProvider ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġimage Provider Ġ= ĠImage Provider . BOTH ĊĊĠĠĠĠĠĠĠ Ġ// ĠMime Ġtypes Ġrestrictions Ġfor Ġgallery . Ġby Ġdefault Ġall Ġmime Ġtypes Ġare Ġvalid ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġmime Types : ĠArray < String > Ġ= Ġempty Array () ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠ Ġ* ĠC rop ĠParameters ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcrop X : ĠFloat Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcrop Y : ĠFloat Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcrop : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcrop O val : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠ Ġ* ĠResize ĠParameters ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠmaxWidth : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠmaxHeight : ĠInt Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠ Ġ* ĠMax ĠFile ĠSize ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠmaxSize : ĠLong Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġimage Provider Interceptor : Ġ(( Image Provider ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠFile ĠDirectory ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠCamera , ĠC rop , ĠCompress ĠImage ĠWill Ġbe Ġstore Ġin Ġthis Ġdirectory . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġnull , ĠImage Ġwill Ġbe Ġstored Ġin Ġ{@ see Ġ[ Environment . DIRECTORY _ DC IM ]} ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġsave Dir : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCall Ġthis Ġwhile Ġpicking Ġimage Ġfor Ġfragment . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconstructor ( fragment : ĠFragment ) Ġ: Ġthis ( fragment . activity !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . fragment Ġ= Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSpecify ĠImage ĠProvider Ġ( Camera , ĠGallery Ġor ĠBoth ) ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġprovider ( image Provider : ĠImage Provider ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . image Provider Ġ= Ġimage Provider ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠOnly ĠCapture Ġimage Ġusing ĠCamera . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// Ġ@ Deprecated (" Please Ġuse Ġprovider ( Image Provider . CAMERA ) Ġinstead ") ĊĠĠĠĠĠĠĠ Ġfun Ġcamera Only (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . image Provider Ġ= ĠImage Provider . CAMERA ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠOnly ĠPick Ġimage Ġfrom Ġgallery . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// Ġ@ Deprecated (" Please Ġuse Ġprovider ( Image Provider . G ALL ERY ) Ġinstead ") ĊĠĠĠĠĠĠĠ Ġfun Ġgallery Only (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . image Provider Ġ= ĠImage Provider . G ALL ERY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRe strict Ġmime Ġtypes Ġduring Ġgallery Ġfetching , Ġfor Ġinstance Ġif Ġyou Ġdo Ġnot Ġwant ĠGIF Ġimages , ĊĠĠĠĠĠĠĠĠ Ġ* Ġyou Ġcan Ġuse ĠarrayOf (" image / png "," image / jpeg "," image / jpg ") ĊĠĠĠĠĠĠĠĠ Ġ* Ġby Ġdefault Ġarray Ġis Ġempty , Ġwhich Ġindicates Ġno Ġadditional Ġrestrictions , Ġjust Ġimages ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġmime Types ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġgallery Mime Types ( mime Types : ĠArray < String >): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . mime Types Ġ= Ġmime Types ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġan Ġaspect Ġratio Ġfor Ġcrop Ġbounds . ĊĠĠĠĠĠĠĠĠ Ġ* ĠUser Ġwon 't Ġsee Ġthe Ġmenu Ġwith Ġother Ġrat ios Ġoptions . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġx Ġaspect Ġratio ĠX ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġy Ġaspect Ġratio ĠY ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcrop ( x : ĠFloat , Ġy : ĠFloat ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrop X Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrop Y Ġ= Ġy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcrop () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠC rop Ġan Ġimage Ġand Ġlet Ġuser Ġset Ġthe Ġaspect Ġratio . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcrop (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . crop Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAllow Ġdim med Ġlayer Ġto Ġhave Ġa Ġcircle Ġinside ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcrop O val (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . crop O val Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠC rop ĠSquare ĠImage , ĠUseful Ġfor ĠProfile ĠImage . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcrop Square (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcrop ( 1 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠMax ĠWidth Ġand ĠHeight Ġof Ġfinal Ġimage ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġmax Result Size ( width : ĠInt , Ġheight : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . maxWidth Ġ= Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . max Height Ġ= Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCompress ĠImage Ġso Ġthat Ġmax Ġimage Ġsize Ġcan Ġbe Ġbelow Ġspecified Ġsize ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠmaxSize ĠSize Ġin ĠKB ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcompress ( maxSize : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . maxSize Ġ= ĠmaxSize Ġ* Ġ 1 0 2 4 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠProvide ĠDirectory Ġto Ġstore ĠCapt ured / Modified Ġimages ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġpath ĠFolder ĠDirectory ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġsave Dir ( path : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . save Dir Ġ= Ġpath ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠProvide ĠDirectory Ġto Ġstore ĠCapt ured / Modified Ġimages ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfile ĠFolder ĠDirectory ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġsave Dir ( file : ĠFile ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . save Dir Ġ= Ġfile . absolute Path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠInter cept ĠSelected ĠImage Provider , Ġ ĠUseful Ġfor ĠAnalytics ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġinterceptor ĠImage Provider ĠInter ceptor ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Image Provider Interceptor ( interceptor : Ġ( Image Provider ) Ġ-> ĠUnit ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . image Provider Interceptor Ġ= Ġinterceptor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠStart ĠImage ĠP icker ĠActivity ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart ( REQUEST _ CODE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠStart ĠImage ĠP icker ĠActivity ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġstart ( req Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( image Provider Ġ== ĠImage Provider . BOTH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPick ĠImage ĠProvider Ġif Ġnot Ġspecified ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Image Provider Dialog ( req Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( req Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠStart ĠImage ĠP icker ĠActivity ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġstart ( completion Handler : Ġ(( result Code : ĠInt , Ġdata : ĠIntent ?) Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( image Provider Ġ== ĠImage Provider . BOTH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPick ĠImage ĠProvider Ġif Ġnot Ġspecified ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Image Provider Dialog ( completion Handler ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( completion Handler ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPick ĠImage ĠProvider Ġif Ġnot Ġspecified ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġshow Image Provider Dialog ( req Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Helper . show Choose App Dialog ( activity , Ġobject Ġ: ĠResult Listener < Image Provider > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Result ( t : ĠImage Provider ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Provider Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Provider Interceptor ?. invoke ( image Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( req Code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPick ĠImage ĠProvider Ġif Ġnot Ġspecified ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġshow Image Provider Dialog ( completion Handler : Ġ(( result Code : ĠInt , Ġdata : ĠIntent ?) Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Helper . show Choose App Dialog ( activity , Ġobject Ġ: ĠResult Listener < Image Provider > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Result ( t : ĠImage Provider ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( t Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Provider Ġ= Ġt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Provider Interceptor ?. invoke ( image Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( completion Handler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠImage Picker Activity . get Cancelled Intent ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion Handler ?. invoke ( Activity . RESULT _ C ANCE LED , Ġintent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet ĠBundle Ġfor ĠImage Picker Activity ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Bundle (): ĠBundle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Serializable ( EXTRA _ IMAGE _ PROVIDER , Ġimage Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String Array ( EXTRA _ MIME _ TYPES , Ġmime Types ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Boolean ( EXTRA _ C ROP _ O VAL , Ġcrop O val ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Boolean ( EXTRA _ C ROP , Ġcrop ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Float ( EXTRA _ C ROP _ X , Ġcrop X ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Float ( EXTRA _ C ROP _ Y , Ġcrop Y ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( EXTRA _ MAX _ WIDTH , ĠmaxWidth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( EXTRA _ MAX _ HEIGHT , ĠmaxHeight ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Long ( EXTRA _ IMAGE _ MAX _ SIZE , ĠmaxSize ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( EXTRA _ SAVE _ DIRECTORY , Ġsave Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠStart ĠImage Picker Activity Ġwith Ġgiven ĠArgument ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠstartActivity ( completion Handler : Ġ(( result Code : ĠInt , Ġdata : ĠIntent ?) Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , ĠImage Picker Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . put Extras ( get Bundle ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment ?. start For Result ( intent ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion Handler ?. invoke ( result . result Code , Ġresult . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?. on Failed Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion Handler ?. invoke ( result . result Code , Ġresult . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠAppCompatActivity ). start For Result ( intent ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion Handler ?. invoke ( result . result Code , Ġresult . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failed Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion Handler ?. invoke ( result . result Code , Ġresult . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e Ġis ĠClass NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ!= Ġnull ) Ġfragment !!. context Ġelse Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Inline Activity Result Ġlibrary Ġnot Ġinstalled Ġfalling Ġback Ġto Ġdefault Ġmethod , Ġplease Ġinstall Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" it Ġfrom Ġhttps :// github . com / flo rent 3 7 / Inline Activity Result Ġif Ġyou Ġwant Ġto Ġget Ġinline Ġactivity Ġresults .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( REQUEST _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠStart ĠImage Picker Activity Ġwith Ġgiven ĠArgument ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠstartActivity ( req Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , ĠImage Picker Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . put Extras ( get Bundle ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment ?. startActivity For Result ( intent , Ġreq Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . startActivity For Result ( intent , Ġreq Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ