Android(安卓)获取设备唯一标识
16lz
2021-12-04
public class MainActivity extends AppCompatActivity { private static final String PERMISSION_READ_PHONE_STATE = "android.permission.READ_PHONE_STATE"; private static final String LINE_SEPARATOR = System.getProperty("line.separator"); private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = findViewById(R.id.textview); StringBuilder sb = new StringBuilder(); sb.append("TelephonyId"); sb.append(LINE_SEPARATOR); sb.append(getTelephonyId()); sb.append(LINE_SEPARATOR); sb.append("MacAddress"); sb.append(LINE_SEPARATOR); sb.append(getMacAddress()); sb.append(LINE_SEPARATOR); sb.append("AndroidId"); sb.append(LINE_SEPARATOR); sb.append(getAndroidId()); textView.setText(sb.toString()); } private void randomTitle() { UUID uuid = UUID.randomUUID(); getActionBar().setTitle(uuid.toString()); } /** * 单卡工程中一个手机号对应一个IMEI号,双卡手机则会对应两个IMEI号 */ private String getTelephonyId() { TelephonyManager telephonyMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); if (PackageManager.PERMISSION_GRANTED == checkSelfPermission(PERMISSION_READ_PHONE_STATE)) { String imei = telephonyMgr.getImei(); String simSerialNumber = telephonyMgr.getSimSerialNumber(); return imei + LINE_SEPARATOR + simSerialNumber; } return null; } /** * Mac 指的就是我们设备网卡的唯一设别码,该码全球唯一,一般称为物理地址,硬件地址用来定义设备的位置 */ private String getMacAddress() { String macAddress = null; StringBuilder buf = new StringBuilder(); NetworkInterface networkInterface = null; try { networkInterface = NetworkInterface.getByName("eth1"); if (networkInterface == null) { networkInterface = NetworkInterface.getByName("wlan0"); } if (networkInterface == null) { return "02:00:00:00:00:00"; } byte[] addr = networkInterface.getHardwareAddress(); for (byte b : addr) { buf.append(String.format("%02X:", b)); } if (buf.length() > 0) { buf.deleteCharAt(buf.length() - 1); } macAddress = buf.toString(); } catch (SocketException e) { e.printStackTrace(); return "02:00:00:00:00:00"; } return macAddress; } /** * 在设备首次运行的时候,系统会随机生成一64位的数字,并把这个数值以16进制保存下来,这个16进制的数字就是ANDROID_ID,但是如果手机恢复出厂设置这个值会发生改变。 */ private String getAndroidId() { return Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID); }}
当前测试手机:360N7 lite, Android 8.0
应用分屏通过在 application 和 activiy 同时设置 android:resizeableActivity=“true” 来实现
这说明可以通过 Imei 和 simSerialNumber 来实现判断是否双开,所以不要包有侥幸心里。
更多相关文章
- Android(安卓)Studio 在小米手机上成功运行
- android seekbar的用法
- 获取android 手机的mac
- Android获取手机内存
- 获取android 手机的mac
- android 设备调试Installation failed with message INSTALL_CAN
- android历史版本对应的api等级
- 「Android」使用SAF打开指定目录
- Android(安卓)获取当前设备的IP地址