在 Android 11 中,由于安全和隐私考虑,应用程序不再可以轻松地获取设备的 SIM 卡和 IMEI 号码。不过,还是有几种方法可以获取这些信息。
方法一:通过 TelephonyManager 来获取 SIM 卡和 IMEI 号码。
示例代码如下:
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
// Get SIM Card Number
String simNumber = tm.getSimSerialNumber();
// Get IMEI Number
String imeiNumber = tm.getDeviceId();
请注意,这种方法需要您的应用程序在 Manifest 文件中声明 READ_PHONE_STATE 权限。
方法二:通过新的 TelephonyManager API 在 Android 10 及以上版本中获取 SIM 卡和 IMEI 号码。
示例代码如下:
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
// Get SIM Card Number
String simNumber = tm.getSimCardNumber();
// Get IMEI Number
String imeiNumber = tm.getImei();
} else {
// For Android versions below Q, use the previous method to get SIM and IMEI numbers
// Get SIM Card Number
String simNumber = tm.getSimSerialNumber();
// Get IMEI Number
String imeiNumber = tm.getDeviceId();
}
请注意,这种方法需要您的应用程序在 Manifest 文件中声明 READ_PRIVILEGED_PHONE_STATE 权限和 READ_PHONE_NUMBERS 权限(针对Android 10)。
总之,以上两种方法中任何一种都可能返回 null 或空值,因为手机必须安装有可用的 SIM 卡才能获取 SIM 卡号码,而 IMEI 号码也可能在某些设备上不可用。需要注意的是,使用这些方法获取 SIM 卡和 IMEI 号码可能会对用户的隐私造成一定的