package Ġcom . z ub air . permission manager Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AlertDialog Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġcom . z ub air . permission manager . enums . Permission Enum Ċ import Ġcom . z ub air . permission manager . interfaces . Full Callback Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠFull Callback Ġ{ ĊĊĠĠĠ Ġ// static Ġvariables ĊĠĠĠ Ġprivate Ġval ĠREQUEST _ PERMISSION S Ġ= Ġ 1 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġ// permission Ġtest ĊĠĠĠĠĠĠĠ Ġif Ġ( is Storage Permission Granted ()) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Storage Permissions () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Permission ĠMethods : --------------------------------------------------------------------------- ĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < String >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPermission Manager . handle Result ( this , Ġrequest Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresult ( permissions Granted : ĠArrayList < Permission Enum >, Ġpermissions Denied : ĠArrayList < Permission Enum >, Ġpermissions Denied Fore ver : ĠArrayList < Permission Enum >, Ġpermissions Ask ed : ĠArrayList < Permission Enum >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( permissions Granted . size Ġ== Ġpermissions Ask ed . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Do Ġsome Ġaction ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( permissions Denied Fore ver . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// If Ġuser Ġanswer Ġ" Never Ġask Ġagain " Ġto Ġa Ġrequest Ġfor Ġpermission , Ġyou Ġcan Ġredirect Ġuser Ġto Ġapp Ġsettings , Ġwith Ġan Ġutils ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dialog ( true ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dialog ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Storage Permission Granted (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġflag Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Permission Utils . is Granted ( this @ MainActivity , ĠPermission Enum . WRITE _ EXTERNAL _ STORAGE ) Ġ&& ĠPermission Utils . is Granted ( this @ MainActivity , ĠPermission Enum . READ _ EXTERNAL _ STORAGE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflag Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġflag ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Storage Permissions () Ġ{ ĊĠĠĠĠĠĠĠ ĠPermission Manager . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. key ( REQUEST _ PERMISSION S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. permission ( Permission Enum . READ _ EXTERNAL _ STORAGE , ĠPermission Enum . WRITE _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. callback ( this @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ask ( this @ MainActivity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Dialog ( is Never Ask Again Checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Permission Ġneeded ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( R . string . permission _ confirmation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok ) Ġ{ Ġdialog Interface , Ġi Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Never Ask Again Checked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Storage Permissions () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPermission Utils . open Application Settings ( this @ MainActivity , ĠR :: class . java . get Package (). name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( android . R . string . cancel ) Ġ{ Ġdialog Interface , Ġi Ġ-> Ġdialog Interface . dismiss () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} Ċ } Ċ