publicclassDeviceUtils{
privatestaticActivity activity;publicDeviceUtils(Activity activity){
this.activity=activity;}publicstaticintgetVersionCode(){
int versionCode =0;try{
//获取软件版本号,对应AndroidManifest.xml下android:versionCode
versionCode = activity.getPackageManager().getPackageInfo(activity.getPackageName(),0).versionCode;}catch(PackageManager.NameNotFoundException e){
e.printStackTrace();}return versionCode;}/**
* 获取版本号名称
*
* @param
* @return
*/publicstaticStringgetVerName(){
String verName ="";try{
verName = activity.getPackageManager().getPackageInfo(activity.getPackageName(),0).versionName;}catch(PackageManager.NameNotFoundException e){
e.printStackTrace();}return verName;}/**
* Return the version name of device's system.
*
* @return the version name of device's system
*/publicstaticStringgetSDKVersionName(){
returnBuild.VERSION.RELEASE;}/**
* Return version code of device's system.
*
* @return version code of device's system
*/publicstaticintgetSDKVersionCode(){
returnBuild.VERSION.SDK_INT;}/**
* Return the android id of device.
*
* @return the android id of device
*/@SuppressLint("HardwareIds")publicstaticStringgetAndroidID(){
String id =Settings.Secure.getString(
activity.getContentResolver(),Settings.Secure.ANDROID_ID
);if("9774d56d682e549c".equals(id))return"";return id ==null?"": id;}/**
* Return the manufacturer of the product/hardware.
* <p>e.g. Xiaomi</p>
*
* @return the manufacturer of the product/hardware
*/publicstaticStringgetManufacturer(){
returnBuild.MANUFACTURER;}/**
* Return the model of device.
* <p>e.g. MI2SC</p>
*
* @return the model of device
*/publicstaticStringgetModel(){
String model =Build.MODEL;if(model !=null){
model = model.trim().replaceAll("\\s*","");}else{
model ="";}return model;}/**
* Return an ordered list of ABIs supported by this device. The most preferred ABI is the first
* element in the list.
*
* @return an ordered list of ABIs supported by this device
*/publicstaticString[]getABIs(){
if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.LOLLIPOP){
returnBuild.SUPPORTED_ABIS;}else{
if(!TextUtils.isEmpty(Build.CPU_ABI2)){
returnnewString[]{
Build.CPU_ABI,Build.CPU_ABI2};}returnnewString[]{
Build.CPU_ABI};}}privatestaticfinalString KEY_UDID ="KEY_UDID";privatevolatilestaticString udid;/**
* Return the unique device id.
* <pre>{1}{UUID(macAddress)}</pre>
* <pre>{2}{UUID(androidId )}</pre>
* <pre>{9}{UUID(random )}</pre>
*
* @return the unique device id
*/publicstaticStringgetUniqueDeviceId(){
returngetUniqueDeviceId("",true);}/**
* Return the unique device id.
* <pre>android 10 deprecated {prefix}{1}{UUID(macAddress)}</pre>
* <pre>{prefix}{2}{UUID(androidId )}</pre>
* <pre>{prefix}{9}{UUID(random )}</pre>
*
* @param prefix The prefix of the unique device id.
* @return the unique device id
*/publicstaticStringgetUniqueDeviceId(String prefix){
returngetUniqueDeviceId(prefix,true);}/**
* Return the unique device id.
* <pre>{1}{UUID(macAddress)}</pre>
* <pre>{2}{UUID(androidId )}</pre>
* <pre>{9}{UUID(random )}</pre>
*
* @param useCache True to use cache, false otherwise.
* @return the unique device id
*/publicstaticStringgetUniqueDeviceId(boolean useCache){
returngetUniqueDeviceId("", useCache);}/**
* Return the unique device id.
* <pre>android 10 deprecated {prefix}{1}{UUID(macAddress)}</pre>
* <pre>{prefix}{2}{UUID(androidId )}</pre>
* <pre>{prefix}{9}{UUID(random )}</pre>
*
* @param prefix The prefix of the unique device id.
* @param useCache True to use cache, false otherwise.
* @return the unique device id
*/publicstaticStringgetUniqueDeviceId(String prefix,boolean useCache){
if(!useCache){
returngetUniqueDeviceIdReal(prefix);}if(udid ==null){
synchronized(DeviceUtils.class){
if(udid ==null){
UtilsBridge utilsBridge=newUtilsBridge(activity);finalString id = utilsBridge.getSpUtils4Utils().getString(KEY_UDID,null);if(id !=null){
udid = id;return udid;}returngetUniqueDeviceIdReal(prefix);}}}return udid;}privatestaticStringgetUniqueDeviceIdReal(String prefix){
try{
finalString androidId =getAndroidID();if(!TextUtils.isEmpty(androidId)){
returnsaveUdid(prefix +2, androidId);}}catch(Exception ignore){
/**/}returnsaveUdid(prefix +9,"");}privatestaticStringsaveUdid(String prefix,String id){
udid =getUdid(prefix, id);UtilsBridge utilsBridge=newUtilsBridge(activity);
utilsBridge.getSpUtils4Utils().put(KEY_UDID, udid);return udid;}privatestaticStringgetUdid(String prefix,String id){
if(id.equals("")){
return prefix + UUID.randomUUID().toString().replace("-","");}return prefix + UUID.nameUUIDFromBytes(id.getBytes()).toString().replace("-","");}}