Android获取手机唯一标识
2016-09-13 15:48
561 查看
1.许多应用都有这样的需求获取你的手机唯一标识,当你卸载软件重新安装的时候也要保证这个唯一标识不变,所以只能根据手机硬件的去获取到唯一标识, 2.有好多跟硬件相关都会有各种权限问题。一种很简单直接获取到READ_PHONE_STATE的权限,读取到设备串号. 3.如果是Android6.0系统需要去申请权限,否则会奔溃,这是6.0的新特性。虽然没有什么暖用。
(1)这种方式不加密,直接获取串号
if (EasyPermissions.hasPermissions(context, Manifest.permission.READ_PHONE_STATE)) {
// 已经有摄像头权限了,可以使用该权限完成app的相应的操作了
Log.e(“执行请求”, “获取true”);
TelephonyManager telephonyManager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
deviceId = telephonyManager.getDeviceId();// imei
if (deviceId == null) {
deviceId = telephonyManager.getSubscriberId();// imsi
}
if (deviceId == null) {
deviceId = telephonyManager.getSimSerialNumber();
}
if (deviceId == null) {
deviceId = “noimei” + telephonyManager.getNetworkOperatorName();
}
Log.e("手机唯一标志deviceId", deviceId);
// textView.setText(“设备号”+deviceId);
return deviceId;
} else { EasyPermissions.requestPermissions(context, "请您为“软件”不打开读取手机标志权限", 2, Manifest.permission.READ_PHONE_STATE); return null; }
(2) 这种方式为多种硬件相关组合到一块,加密方式
//获取手机唯一串号
String szImei = null;
if (EasyPermissions.hasPermissions(context, Manifest.permission.READ_PHONE_STATE)) {
TelephonyManager TelephonyMgr = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
szImei = TelephonyMgr.getDeviceId();
} else {
// EasyPermissions.requestPermissions(context, “请您为打开唯一标志权限”,
// 2, Manifest.permission.READ_PHONE_STATE);
} String m_szDevIDShort = "35" + //we make this look like a valid IMEI Build.BOARD.length() % 10 + Build.BRAND.length() % 10 + Build.CPU_ABI.length() % 10 + Build.DEVICE.length() % 10 + Build.DISPLAY.length() % 10 + Build.HOST.length() % 10 + Build.ID.length() % 10 + Build.MANUFACTURER.length() % 10 + Build.MODEL.length() % 10 + Build.PRODUCT.length() % 10 + Build.TAGS.length() % 10 + Build.TYPE.length() % 10 + Build.USER.length() % 10; //13 digits String m_szAndroidID = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); String m_szWLANMAC = wm.getConnectionInfo().getMacAddress(); String m_szLongID = szImei + m_szDevIDShort + m_szAndroidID + m_szWLANMAC; // compute md5 MessageDigest m = null; try { m = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } m.update(m_szLongID.getBytes(), 0, m_szLongID.length()); // get md5 bytes byte p_md5Data[] = m.digest(); // create a hex string String m_szUniqueID = new String(); for (int i = 0; i < p_md5Data.length; i++) { int b = (0xFF & p_md5Data[i]); // if it is a single digit, make sure it have 0 in front (proper padding) if (b <= 0xF) m_szUniqueID += "0"; // add number to string m_szUniqueID += Integer.toHexString(b); } // hex string to uppercase m_szUniqueID = m_szUniqueID.toUpperCase(); Log.e("手机唯一标志deviceId", m_szUniqueID);
这个是我的demo下载地址,欢迎体验
http://download.csdn.net/detail/u014007519/9629539
相关文章推荐
- Android 手机上获取物理唯一标识码
- Android 获取手机唯一标识 IMEI号 应用名称、版本名、版本号
- Android获取手机唯一标识
- Android 获取手机唯一 标识
- 如何获取Android手机的唯一标识(唯一序列号)
- Android中获取手机IMEI,IMSI, MAC(Android 6.0)工具类(标识用户唯一)
- Android应用怎么实现免注册,直接获取手机唯一标识进行登录
- [android基础知识] 之十七: Android手机获取唯一物理标识
- Android应用怎么实现免注册,直接获取手机唯一标识进行登录
- android手机获取唯一标识的方法
- Android 手机上获取物理唯一标识码
- android手机获取唯一标识
- Android中获取手机IMEI,IMSI, MAC(Android 6.0、支持4G环境获取)工具类(标识用户唯一)
- android开发中获取的设备id(每部手机的唯一标识)
- Android 获取手机的唯一标识
- android获取手机唯一标识的方法
- Android 获取手机IMEI (串号) 手机唯一标识
- Android 手机上获取物理唯一标识码[转]
- android获取设备唯一标识完美解决方案
- android获取设备唯一标识完美解决方案