package Ġio . github . chen fe i 0 9 2 8 . app . activity Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . provider . Settings Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġio . github . chen fe i 0 9 2 8 . app . result . Permission Request Ċ import Ġio . github . chen fe i 0 9 2 8 . util . R Ċ Ċ /** Ċ Ġ* Ġ è¿Ľè¡Į æľī çĲĨ çĶ± çļĦ çĶ³è¯· æŁĲ é¡¹ æĿĥéĻĲ ï¼Ī åĮº åĪ« äºİ éĥ¨åĪĨ ä¸įéľĢè¦ģ çĲĨ çĶ± åį³åı¯ çĶ³è¯· çļĦ æĿĥéĻĲ ï¼ī Ċ Ġ*/ Ċ fun ĠActivity . on Show Permission R ationale (@ String Res Ġmsg : ĠInt , Ġrequest : ĠPermission Request ) Ġ{ ĊĠĠĠ Ġon Show Permission R ationale ( getString ( msg ), Ġrequest ) Ċ } Ċ Ċ /** Ċ Ġ* Ġ è¿Ľè¡Į æľī çĲĨ çĶ± çļĦ çĶ³è¯· æŁĲ é¡¹ æĿĥéĻĲ ï¼Ī åĮº åĪ« äºİ éĥ¨åĪĨ ä¸įéľĢè¦ģ çĲĨ çĶ± åį³åı¯ çĶ³è¯· çļĦ æĿĥéĻĲ ï¼ī Ċ Ġ*/ Ċ fun ĠActivity . on Show Permission R ationale ( msg : ĠCharSequence , Ġrequest : ĠPermission Request ) Ġ{ ĊĠĠĠ ĠAlertDialog ĊĠĠĠĠĠĠĠ Ġ. Builder ( this ) ĊĠĠĠĠĠĠĠ Ġ. set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġ. setMessage ( msg ) ĊĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . permission _ allow ) Ġ{ Ġ_, Ġ_ Ġ-> Ġrequest . proceed () Ġ} ĊĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . permission _ deny ) Ġ{ Ġ_, Ġ_ Ġ-> Ġrequest . cancel () Ġ} ĊĠĠĠĠĠĠĠ Ġ. show () Ċ } Ċ Ċ /** Ċ Ġ* Ġå½ĵ æŁĲ é¡¹ æĿĥéĻĲ è¢« æĭ Ĵ ç»Ŀ ï¼Ī å½ĵ æŁĲ é¡¹ æĿĥéĻĲ è¢« çĶ¨æĪ· åĲ¦ åĨ³ ï¼Į ä½Ĩ æľª ä¸į åĨį æıĲç¤º ï¼ī Ċ Ġ*/ Ċ fun ĠActivity . on Permission Denied ( ĊĠĠĠ Ġ@ String Res Ġmsg : ĠInt , ĊĠĠĠ Ġon Positive Action : ĠDialog Interface . OnClickListener , ĊĠĠĠ Ġon Negative Action : ĠDialog Interface . OnClickListener ? Ċ ) Ġ{ ĊĠĠĠ Ġon Permission Denied ( getString ( msg ), Ġon Positive Action , Ġon Negative Action ) Ċ } Ċ Ċ /** Ċ Ġ* Ġå½ĵ æŁĲ é¡¹ æĿĥéĻĲ è¢« æĭ Ĵ ç»Ŀ ï¼Ī å½ĵ æŁĲ é¡¹ æĿĥéĻĲ è¢« çĶ¨æĪ· åĲ¦ åĨ³ ï¼Į ä½Ĩ æľª ä¸į åĨį æıĲç¤º ï¼ī Ċ Ġ*/ Ċ fun ĠActivity . on Permission Denied ( ĊĠĠĠ Ġmsg : ĠCharSequence , ĊĠĠĠ Ġon Positive Action : ĠDialog Interface . OnClickListener , ĊĠĠĠ Ġon Negative Action : ĠDialog Interface . OnClickListener ? Ċ ) Ġ{ ĊĠĠĠ ĠAlertDialog ĊĠĠĠĠĠĠĠ Ġ. Builder ( this ) ĊĠĠĠĠĠĠĠ Ġ. setTitle ( android . R . string . dialog _ alert _ title ) ĊĠĠĠĠĠĠĠ Ġ. setMessage ( msg ) ĊĠĠĠĠĠĠĠ Ġ. set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . permission _ allow , Ġon Positive Action ) ĊĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . permission _ deny , Ġon Negative Action ) ĊĠĠĠĠĠĠĠ Ġ. show () Ċ } Ċ Ċ /** Ċ Ġ* Ġå½ĵ æŁĲ é¡¹ æĿĥéĻĲ è¢« æĭ Ĵ ç»Ŀ ï¼Ī å½ĵ æŁĲ é¡¹ æĿĥéĻĲ è¢« çĶ¨æĪ· åĲ¦ åĨ³ ï¼Į ä½Ĩ æľª ä¸į åĨį æıĲç¤º ï¼ī Ċ Ġ*/ Ċ inline Ġfun ĠActivity . on Permission Denied Kt ( ĊĠĠĠ Ġ@ String Res Ġmsg : ĠInt , ĊĠĠĠ Ġcross inline Ġon Positive Action : Ġ( DialogInterface , ĠInt ) Ġ-> ĠUnit , ĊĠĠĠ Ġcross inline Ġon Negative Action : Ġ( DialogInterface , ĠInt ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġ_ Ġ-> Ġ} Ċ ) Ġ{ ĊĠĠĠ Ġon Permission Denied Kt ( getString ( msg ), Ġon Positive Action , Ġon Negative Action ) Ċ } Ċ Ċ /** Ċ Ġ* Ġå½ĵ æŁĲ é¡¹ æĿĥéĻĲ è¢« æĭ Ĵ ç»Ŀ ï¼Ī å½ĵ æŁĲ é¡¹ æĿĥéĻĲ è¢« çĶ¨æĪ· åĲ¦ åĨ³ ï¼Į ä½Ĩ æľª ä¸į åĨį æıĲç¤º ï¼ī Ċ Ġ*/ Ċ inline Ġfun ĠActivity . on Permission Denied Kt ( ĊĠĠĠ Ġmsg : ĠCharSequence , ĊĠĠĠ Ġcross inline Ġon Positive Action : Ġ( DialogInterface , ĠInt ) Ġ-> ĠUnit , ĊĠĠĠ Ġcross inline Ġon Negative Action : Ġ( DialogInterface , ĠInt ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġ_ Ġ-> Ġ} Ċ ) Ġ{ ĊĠĠĠ Ġon Permission Denied ( msg , ĠDialog Interface . OnClickListener Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠ Ġon Positive Action ( dialog , Ġwhich ) ĊĠĠĠ Ġ}, ĠDialog Interface . OnClickListener Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠ Ġon Negative Action ( dialog , Ġwhich ) ĊĠĠĠ Ġ}) Ċ } Ċ Ċ /** Ċ Ġ* Ġå½ĵ æĿĥéĻĲ è¢« æĭ Ĵ ç»Ŀ å¹¶ ä¸į åĨį æıĲ é ĨĴ ï¼Į æıĲç¤º çĶ¨æĪ· åħģè®¸ æĿĥéĻĲ Ċ Ġ*/ Ċ fun ĠActivity . on Permission Never Ask Again ( ĊĠĠĠ Ġ@ String Res Ġmsg : ĠInt , Ġon Negative Action : ĠDialog Interface . OnClickListener ? Ċ ) Ġ{ ĊĠĠĠ Ġon Permission Denied ( msg , ĠDialog Interface . OnClickListener Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ ĠstartActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . ACTION _ APPLICATION _ DETAILS _ SETTINGS , ĠUri . parse (" package :$ packageName ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}, Ġon Negative Action ) Ċ } Ċ Ċ /** Ċ Ġ* Ġå½ĵ æĿĥéĻĲ è¢« æĭ Ĵ ç»Ŀ å¹¶ ä¸į åĨį æıĲ é ĨĴ ï¼Į æıĲç¤º çĶ¨æĪ· åħģè®¸ æĿĥéĻĲ Ċ Ġ*/ Ċ fun ĠActivity . on Permission Never Ask Again ( ĊĠĠĠ Ġmsg : ĠCharSequence , Ġon Negative Action : ĠDialog Interface . OnClickListener ? Ċ ) Ġ{ ĊĠĠĠ Ġon Permission Denied ( msg , ĠDialog Interface . OnClickListener Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ ĠstartActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . ACTION _ APPLICATION _ DETAILS _ SETTINGS , ĠUri . parse (" package :$ packageName ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}, Ġon Negative Action ) Ċ } Ċ Ċ /** Ċ Ġ* Ġå½ĵ æĿĥéĻĲ è¢« æĭ Ĵ ç»Ŀ å¹¶ ä¸į åĨį æıĲ é ĨĴ ï¼Į æıĲç¤º çĶ¨æĪ· åħģè®¸ æĿĥéĻĲ Ċ Ġ*/ Ċ inline Ġfun ĠActivity . on Permission Never Ask Again Kt ( ĊĠĠĠ Ġ@ String Res Ġmsg : ĠInt , Ġcross inline Ġon Negative Action : Ġ( DialogInterface , ĠInt ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġ_ Ġ-> Ġ} Ċ ) Ġ{ ĊĠĠĠ Ġon Permission Never Ask Again ( msg , ĠDialog Interface . OnClickListener Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠ Ġon Negative Action ( dialog , Ġwhich ) ĊĠĠĠ Ġ}) Ċ } Ċ Ċ /** Ċ Ġ* Ġå½ĵ æĿĥéĻĲ è¢« æĭ Ĵ ç»Ŀ å¹¶ ä¸į åĨį æıĲ é ĨĴ ï¼Į æıĲç¤º çĶ¨æĪ· åħģè®¸ æĿĥéĻĲ Ċ Ġ*/ Ċ inline Ġfun ĠActivity . on Permission Never Ask Again Kt ( ĊĠĠĠ Ġmsg : ĠCharSequence , Ġcross inline Ġon Negative Action : Ġ( DialogInterface , ĠInt ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġ_ Ġ-> Ġ} Ċ ) Ġ{ ĊĠĠĠ Ġon Permission Never Ask Again ( msg , ĠDialog Interface . OnClickListener Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠ Ġon Negative Action ( dialog , Ġwhich ) ĊĠĠĠ Ġ}) Ċ } Ċ