/* Ċ Ġ* ĠCopyright Ġ 2 0 1 5 Ġ 7 5 py Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . nag opy . android . ap lin . model . converter Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . Application Info Ċ import Ġandroid . content . pm . Package Info Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Build Ċ import Ġcom . nag opy . android . ap lin . entity . App Ċ import Ġcom . nag opy . android . ap lin . entity . Permission Group Ċ import Ġcom . nag opy . android . ap lin . model . A pl in Device Policy Manager Ċ import Ġcom . nag opy . android . ap lin . model . Applications Ċ import Ġcom . nag opy . android . ap lin . model . Permission Groups Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . lang . reflect . Field Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ċ open Ġclass ĠApp Converter Ġ@ Inject Ġconstructor () Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġopen Ġlateinit Ġvar Ġapplication : ĠApplication ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġopen Ġlateinit Ġvar Ġpackage Manager : ĠPackage Manager ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġopen Ġlateinit Ġvar Ġa pl in Device Policy Manager : ĠA pl in Device Policy Manager ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpermission Groups : ĠPermission Groups ĊĊĠĠĠ Ġlateinit Ġvar Ġall Permission Groups : ĠList < Permission Group > ĊĠĠĠ Ġlateinit Ġvar Ġhome Activities : ĠList < String > ĊĠĠĠ Ġlateinit Ġvar Ġlauncher Pk gs : ĠList < String > ĊĠĠĠ Ġval Ġenabled Setting Field : ĠField Ġ= ĠApplication Info :: class . java . getDeclared Field (" enabled Setting "). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġis Accessible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġprepare () Ġ{ ĊĠĠĠĠĠĠĠ Ġall Permission Groups Ġ= Ġpermission Groups . getAll Permission Groups () ĊĠĠĠĠĠĠĠ ĠTim ber . v (" all Permission Groups Ġ% s ", Ġall Permission Groups ) ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ MAIN ). add Category ( Intent . CATEGORY _ HOME ) ĊĠĠĠĠĠĠĠ Ġhome Activities Ġ= Ġpackage Manager . query Intent Activities ( intent , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . activity Info . packageName Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus (" com . google . android . launcher ") Ġ// Ġ ä» ķ çµĦ ãģ¿ ãģĮ æľª ç¢ºèªį ãģł ãģĮ ãĢģ ãģĵãĤĮ ãģ¯ ãĥ Ľ ãĥ¼ãĥł ãĤ¢ãĥĹãĥª åĪ¤ å®ļ ãģ«ãģª ãģ£ ãģ¦ãģĦãĤĭ ãģ£ ãģ ½ ãģĦ ĊĊĠĠĠĠĠĠĠ Ġval Ġlauncher Intent Ġ= ĠIntent ( Intent . ACTION _ MAIN , Ġnull ). add Category ( Intent . CATEGORY _ LA UNCH ER ) ĊĠĠĠĠĠĠĠ Ġlauncher Pk gs Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . query Intent Activities ( launcher Intent , Ġ 0 ). map Ġ{ Ġit . activity Info . packageName Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w ( e , Ġ" Error : Ġquery Intent Activities ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġset Values ( app : ĠApp , ĠpackageName : ĠString , Ġvar arg Ġapp Parameters : ĠApp Parameters Ġ= ĠApp Parameters . values ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpi Ġ= Ġget Package Info ( packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Parameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . target Sdk Version . contains ( Build . VERSION . SDK _ INT ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġparam Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparam . setValue ( app , Ġpi , Ġthis @ App Converter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠPackage Manager . Name NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w ( e , Ġ" Not Ġfound . Ġpkg =% s ", ĠpackageName ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e , Ġ" Error Ġoccurred . Ġpkg =% s ", ĠpackageName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Package Info ( packageName : ĠString ): ĠPackage Info Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġä¸Ģ åº¦ ãģ« åıĸå¾Ĺ ãģĻãĤĭ éĩı ãģĮ å¤ļ ãģĦ ãģ¨ ãĤ¨ãĥ© ãĥ¼ ãģ« ãģªãĤĭ ãĤī ãģĹãģĦ ãģ®ãģ§ ãĢģ ç´° ãģĭ ãģı åĪĨ ãģĳ ãģ¦ åıĸå¾Ĺ ãģĻãĤĭ ĊĠĠĠĠĠĠĠ Ġval Ġpackage Info Ġ= Ġpackage Manager . get Package Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApplications . flags ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpkg Ġ= Ġpackage Manager . get Package Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Manager . GET _ PERMISSION S Ġor ĠApplications . flags ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Info . requested Permissions Ġ= Ġpkg . requested Permissions ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsig Ġ= Ġpackage Manager . get Package Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Manager . GET _ SIGNATURE S Ġor ĠApplications . flags ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Info . signatures Ġ= Ġsig . signatures ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġpackage Info ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠConverter Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġtarget Sdk Version (): ĠInt Range ĊĠĠĠĠĠĠĠ Ġfun ĠsetValue ( app : ĠApp , Ġpackage Info : ĠPackage Info , Ġapp Converter : ĠApp Converter ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ