package Ġw tf . q ase . power _ optimization _ sur viv or Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Power Manager Ċ import Ġandroid . provider . Settings Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġw tf . q ase . power _ optimization _ sur viv or . dto . Power Manager Option Ċ Ċ object ĠPower Optimization Sur viv or Util Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġused Ġidentify Ġif Ġcurrent Ġapp Ġis Ġalready Ġexcluded Ġfrom Ġbattery Ġoptimization . ĊĠĠĠĠ Ġ* Ġ@ return ĠBoolean ĠReturns Ġtrue Ġif Ġapp Ġis Ġnot Ġoptimized , Ġtrue Ġif Ġit Ġis . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . M ) ĊĠĠĠ Ġfun Ġis Ign oring Battery Optim izations ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= Ġcontext . packageName ĊĠĠĠĠĠĠĠ Ġval Ġpm Ġ= Ġcontext . getSystem Service ( Context . POWER _ SERVICE ) Ġas ĠPower Manager ĊĠĠĠĠĠĠĠ Ġreturn Ġpm . is Ign oring Battery Optim izations ( packageName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠREAD ĠTHIS ĠBE FORE ĠUSING ĠTHIS ĠMETHOD : Ġhttps :// developer . android . com / training / monitoring - device - state / do ze - stand by # wh itel isting - cases ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġopens Ġdialog Ġasking Ġuser Ġto Ġignore Ġbattery Ġoptimization Ġfor Ġthis Ġapp . ĊĠĠĠĠ Ġ* ĠIf Ġyou Ġare Ġusing Ġthis Ġmethod , Ġyou Ġneed Ġto Ġhave Ġ< uses - permission Ġandroid : name =" android . permission . REQUEST _ IGNORE _ B ATTER Y _ OPTIMI Z ATIONS " Ġ/> Ġin ĠAndroid Manifest . ĊĠĠĠĠ Ġ* ĠAfter Ġreleasing Ġthe Ġapp Ġwith Ġthis Ġpermission , Ġgoogle Ġbot Ġwill Ġmost Ġprobably Ġdelete Ġit Ġfrom Ġgoogle Ġplay Ġand Ġafter Ġthat , Ġyou Ġneed Ġto Ġexplain Ġthem , Ġwhy Ġyou Ġneed Ġto Ġuse Ġit Ġand Ġhope Ġthey Ġwill Ġallow Ġit . ĊĠĠĠĠ Ġ* ĠAlternatively , Ġyou Ġcan Ġuse ĠPower Optimization Sur viv or Util :: goTo Ignore Battery Optimization Settings , Ġwhich Ġdirect s Ġuser Ġto Ġpower Ġoptim isation Ġsettings . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . M ) ĊĠĠĠ Ġfun Ġignore Battery Optim izations ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= Ġcontext . packageName ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠSettings . ACTION _ REQUEST _ IGNORE _ B ATTER Y _ OPTIMI Z ATIONS ĊĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . parse (" package :$ packageName ") ĊĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġsa fer Ġalternative Ġof ĠPower Optimization Sur viv or Util :: ignore Battery Optim izations ĊĠĠĠĠ Ġ* ĠIt Ġdoes Ġnot Ġshow Ġdialog Ġstraight Ġfrom Ġapp , Ġbut Ġonly Ġnavig ates Ġuser Ġto Ġthe Ġbattery Ġoptimization Ġsettings . ĊĠĠĠĠ Ġ* ĠGoogle Ġallows Ġthis Ġwith Ġno Ġrestrictions . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . M ) ĊĠĠĠ Ġfun Ġgo To Ignore Battery Optimization Settings ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠSettings . ACTION _ IGNORE _ B ATTER Y _ OPTIMI Z ATION _ SETTINGS ĊĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġreturns Ġmap Ġof Ġvendor Ġspecific Ġbattery Ġoptim isation Ġsettings . ĠKey Ġof Ġthe Ġmap Ġis Ġvendor Ġin Ġlower Ġcase Ġe . g . Ġ' s amsung ', Ġ' hu awei ', .. ĊĠĠĠĠ Ġ* ĠThe Ġway Ġto Ġuse Ġit Ġis Ġto Ġcheck Ġusers Ġvendor Ġand Ġpresent Ġhim Ġwith Ġvendor Ġspecific Ġoptions Ġ( it Ġexists ) Ġand Ġexplain Ġhim , Ġwhat Ġto Ġset Ġthere . ĊĠĠĠĠ Ġ* ĠNot Ġevery ĠPower Manager Option Ġis Ġpresent Ġon Ġall Ġdevices Ġfrom Ġthe Ġvendor , Ġso Ġyou Ġneed Ġto Ġcheck ĠPower Manager Option :: is Callable Ġto Ġbe Ġsure , Ġthe Ġsetting Ġis Ġpresent Ġon Ġthe Ġdevice . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġprovide Power Manager Settings Map (): ĠMap < String , ĠList < Power Manager Option >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMap Provider Util . provide Power Manager Settings Map () ĊĠĠĠ Ġ} Ċ } Ċ