package Ġcom . kaz u coco a . d roid test helper lib Ċ Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Log Ċ Ċ import Ġjava . lang . reflect . Field Ċ import Ġjava . lang . reflect . Invocation TargetException Ċ import Ġjava . lang . reflect . Method Ċ import Ġjava . util . Locale Ċ Ċ class ĠHandle Locale Ġ{ ĊĊĠĠĠ Ġfun Ġset Locale ( locale : ĠLocale ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Locale With ( locale ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Failed Ġto Ġset Ġlocale ", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( ĊĠĠĠĠĠĠĠ ĠClass NotFoundException :: class , ĊĠĠĠĠĠĠĠ ĠNoSuch Method Exception :: class , ĊĠĠĠĠĠĠĠ ĠInvocation TargetException :: class , ĊĠĠĠĠĠĠĠ ĠIllegal AccessException :: class , ĊĠĠĠĠĠĠĠ ĠNoSuch Field Exception :: class ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġfun Ġset Locale With ( locale : ĠLocale ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġactivity Manager Native Class Ġ= ĠClass . forName (" android . app . Activity Manager Native ") ĊĊĠĠĠĠĠĠĠ Ġval Ġam n Ġ= Ġactivity Manager Native Class . getMethod (" getDefault "). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvoke ( activity Manager Native Class ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠBuild . VERSION _ CODES . O ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġget Configuration Ġmoved Ġfrom ĠActivity Manager Native Ġto ĠActivity Manager Proxy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Manager Native Class Ġ= ĠClass . forName ( am n . java Class . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġactivity Manager Native Class . getMethod (" getConfiguration "). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvoke ( am n ) Ġas ĠConfiguration ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Class Ġ= Ġconfig . java Class ĊĠĠĠĠĠĠĠ Ġconfig Class . getField (" user Set Locale "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Boolean ( config , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconfig . locale Ġ= Ġlocale ĊĠĠĠĠĠĠĠ Ġactivity Manager Native Class . getMethod (" update Configuration ", ĠConfiguration :: class . java ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvoke ( am n , Ġconfig ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠHandle Locale :: class . java . simple Name ĊĠĠĠ Ġ} Ċ } Ċ