package Ġ` fun `. y esh u . nos ugar . device info . utils Ċ Ċ import Ġ` fun `. y esh u . nos ugar . device info . model . DeviceInfo Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroid . provider . Settings Ċ Ċ import Ġandroid . tele phony . Tele phony Manager Ċ import Ġjava . lang . Exception Ċ import Ġjava . lang . reflect . Method Ċ Ċ // Ġhttps :// juejin . cn / post / 6 8 4 4 9 0 3 6 8 8 1 9 3 0 8 1 3 5 2 Ċ object ĠDevice Info Utils Ġ{ ĊĠĠĠ Ġ@ Suppress Lint (" Hardware Ids ") ĊĠĠĠ Ġfun Ġget DeviceInfo ( context : ĠContext ): ĠDevice Info Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsn Ġ= Ġget SN () ĊĠĠĠĠĠĠĠ Ġval Ġandroid Id Ġ= ĠSettings . Secure . getString ( context . content Resolver , ĠSettings . Secure . ANDROID _ ID ) ĊĠĠĠĠĠĠĠ Ġval Ġmac Ġ= ĠMac Utils . get Mac Address () ĊĠĠĠĠĠĠĠ Ġval Ġ ime i Ġ= Ġget I me i ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġme id Ġ= Ġget Me id ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġbrand Ġ= ĠBuild . B RAND ĊĠĠĠĠĠĠĠ Ġval Ġsdk Version Ġ= ĠBuild . VERSION . SDK _ INT ĊĠĠĠĠĠĠĠ Ġval Ġrelease Version Ġ= ĠBuild . VERSION . RELEASE ĊĠĠĠĠĠĠĠ Ġval Ġscreen Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ System Utils . get Screen Width ( context )} * ${ System Utils . get Screen Height ( context )}" ĊĠĠĠĠĠĠĠ Ġreturn ĠDevice Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn Ġ= Ġsn , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Id Ġ= Ġandroid Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmac Ġ= Ġmac , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ ime i Ġ= Ġ ime i , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġme id Ġ= Ġme id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbrand Ġ= Ġbrand , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsdk Version Ġ= Ġsdk Version , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Version Ġ= Ġrelease Version , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Ġ= Ġscreen , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Memory Size Ġ= ĠSystem Utils . getTotal Internal Memory Size (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexternal Memory Size Ġ= ĠSystem Utils . getTotal External Memory Size () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget I me i ( context : ĠContext ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" unknown " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtele phony Manager Ġ= Ġcontext . getSystem Service ( Context . TELE PHONY _ SERVICE ) Ġas ĠTele phony Manager ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġ" unknown " ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtele phony Manager . ime i ? :" unknown " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtele phony Manager . deviceId ? :" unknown " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Me id ( context : ĠContext ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" unknown " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtele phony Manager Ġ= Ġcontext . getSystem Service ( Context . TELE PHONY _ SERVICE ) Ġas ĠTele phony Manager ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġ" unknown " ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtele phony Manager . me id ? :" unknown " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtele phony Manager . deviceId ? :" unknown " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget SN (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġserial Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ// éĢļè¿ĩ android . os èİ·åıĸ sn åı· ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserial Ġ= ĠBuild . SERIAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( serial Ġ!= Ġ"" Ġ&& Ġserial Ġ!= Ġ" unknown ") Ġreturn Ġserial ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserial Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// éĢļè¿ĩ åıį å°Ħ èİ·åıĸ sn åı· ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠClass . forName (" android . os . System Properties ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġget : ĠMethod Ġ= Ġc . getMethod (" get ", ĠString :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserial Ġ= Ġget . invoke ( c , Ġ" ro . serial no ") Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( serial Ġ!= Ġ"" Ġ&& Ġserial Ġ!= Ġ" unknown ") Ġreturn Ġserial ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// 9 . 0 åıĬ ä»¥ä¸Ĭ æĹłæ³ķ èİ·åıĸ åĪ° sn ï¼Į æŃ¤ æĸ¹æ³ķ ä¸º è¡¥ åħħ ï¼Į èĥ½å¤Ł èİ·åıĸ åĪ° å¤ļ æķ° é«ĺ çīĪæľ¬ æīĭæľº Ġsn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġserial Ġ= ĠBuild . get Serial () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserial Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġserial ĊĠĠĠ Ġ} Ċ }