package Ġcom . example . permission . request Ċ Ċ import Ġcom . example . permission . I Rejected Fore ver Callback Ċ import Ġcom . example . permission . base . I Chain Ċ import Ġcom . example . permission . base . I Permission Results Callback Ċ import Ġcom . example . permission . base . Permission Result Ċ import Ġcom . example . permission . base . REASON _ RE JECT ED _ FORE VER _ CALLBACK Ċ import Ġcom . example . permission . utils . Log Util Ċ import Ġcom . example . permission . utils . Permission Util Ċ Ċ /** Ċ Ġ* Ġ[ I Rejected Fore ver Callback . I Rejected Fore ver Process ] çļĦ é»ĺè®¤ å®ŀçİ° Ċ Ġ* ĠCreated Ġby Ġ éĻĪ åģ ¥ å® ĩ Ġat Ġ 2 0 2 1 / 8 / 1 8 Ċ Ġ*/ Ċ internal Ġclass ĠDefault Rejected Fore ver Process ( private Ġval Ġchain : ĠI Chain ) Ġ: ĠI Rejected Fore ver Callback . I Rejected Fore ver Process Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Default Rejected Fore ver Process " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgoto Settings () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Util . d ( TAG , Ġ" goto Settings ") ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġchain . getRequest () ĊĠĠĠĠĠĠĠ Ġval Ġpermissions Ġ= ĠArrayList < String >( request . gr anted Permissions . size Ġ+ Ġrequest . rejected Permissions . size Ġ+ Ġrequest . rejected Fore ver Permissions . size ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( request . get Cl oned Granted Permissions ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( request . get Cl oned Rejected Permissions ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( request . get Cl oned Rejected Fore ver Permissions ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrequest . getRequest Step Callback Manager (). dispatch Request Step Ġ{ Ġcallback Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Request Resume ( request , ĠRE ASON _ RE JECT ED _ FORE VER _ CALLBACK ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrequest . is Reject Request Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġrequest . rejected Fore ver Callback Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġrequest . get Proxy Fragment (). goto Settings For Check Results ( permissions , Ġobject Ġ: ĠI Permission Results Callback { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Permission Results ( permission Results : ĠList < Permission Result >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermission Results . forEach Ġ{ result Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgranted Ġ= Ġresult . gr anted ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpermission Ġ= Ġresult . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( request . rejected Fore ver Permissions . contains ( permission )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( gr anted ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . rejected Fore ver Permissions . remove ( permission ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . gr anted Permissions . add ( permission ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif ( request . rejected Permissions . contains ( permission )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( gr anted ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . rejected Permissions . remove ( permission ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . gr anted Permissions . add ( permission ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! gr anted ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . gr anted Permissions . remove ( permission ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( result . should Show R ationale ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . rejected Permissions . add ( permission ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . rejected Fore ver Permissions . add ( permission ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchain . process ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreject Request () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Util . d ( TAG , Ġ" reject Request ") ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġchain . getRequest () ĊĠĠĠĠĠĠĠ Ġrequest . getRequest Step Callback Manager (). dispatch Request Step Ġ{ Ġcallback Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Request Resume ( request , ĠRE ASON _ RE JECT ED _ FORE VER _ CALLBACK ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrequest . is Reject Request Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġrequest . rejected Fore ver Callback Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġchain . process ( request , Ġfinish Ġ Ġ= Ġtrue ) ĊĠĠĠ Ġ} Ċ }