package com.wpc.library.util.common; import android.Manifest; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.provider.Settings; import android.telephony.TelephonyManager; import java.util.ArrayList; import java.util.List; import androidx.core.app.ActivityCompat; import static android.content.Context.TELEPHONY_SERVICE; public class DeviceUtil { private static List installedPackages; private static String imei; private static String android_id; private static String imsi; public static synchronized List getInstalledPackagesCache(Context context) { if (installedPackages != null) { return installedPackages; } PackageManager pManager = context.getPackageManager(); //获取手机内所有应用 installedPackages = pManager.getInstalledPackages(0); return installedPackages; } public static synchronized List getInstalledPackageNamesCache(Context context) { List list = getInstalledPackagesCache(context); List nameList = new ArrayList<>(); for (PackageInfo pi : list) { nameList.add(pi.packageName); } return nameList; } public static synchronized String getImeiCache(Context context) { if (imei != null) { return imei; } TelephonyManager manager = (TelephonyManager) context.getSystemService(TELEPHONY_SERVICE); try { if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { return ""; } imei = manager.getDeviceId(); } catch (Exception e) { } imei = imei == null ? "" : imei; return imei; } public static synchronized String getAndroidIdCache(Context context) { if (android_id != null) { return android_id; } try { android_id = Settings.System.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); } catch (Exception e) { } android_id = android_id == null ? "" : android_id; return android_id; } public static synchronized String getImsiCache(Context context) { if (imsi != null) { return imsi; } TelephonyManager mTelephonyMgr = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); try { if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { return ""; } imsi = mTelephonyMgr.getSubscriberId(); }catch(Exception e){ } imsi = imsi == null ? "" : imsi; return imsi; } }