package Ġcom . fingerprint js . android . fp js _ pro . device _ id _ providers ĊĊ Ċ import Ġandroid . content . Content Resolver Ċ import Ġandroid . net . Uri Ċ import Ġcom . fingerprint js . android . fp js _ pro . tools . execute Safe ĊĊ Ċ class ĠG sf Id Provider ( ĊĠĠĠ Ġprivate Ġval Ġcontent Resolver : ĠContent Resolver Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġget G sf Android Id (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġexecute Safe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġget G sf Id () Ġ}, Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget G sf Id (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠURI Ġ= ĠUri . parse ( URI _ GS F _ CONTENT _ PROVIDER ) ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠarrayOf ( ID _ KEY ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġcontent Resolver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. query ( URI , Ġnull , Ġnull , Ġparams , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! cursor . moveTo First () Ġ|| Ġcursor . column Count Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġjava . lang . Long . to HexString ( cursor . getString ( 1 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġconst Ġval ĠURI _ GS F _ CONTENT _ PROVIDER Ġ= Ġ" content :// com . google . android . gs f . g services " Ċ private Ġconst Ġval ĠID _ KEY Ġ= Ġ" android _ id "