唯一设备id这个问题也是困扰了我很久,综合stackoverflow的一些思路,形成适合自己的并且可用的解决方案。仅供参考
主要思路参考http://stackoverflow.com/questions/2785485/is-there-a-unique-android-device-id
方向就是获取设备基本不变的一些参数,揉合成一个串号,当然百度推送生成的串号感觉也是唯一的且不会发生变化,具体他们的方案我还没研究过,有兴趣的可以自行研究一下。
[代码]java代码:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String deviceId =null, androidId = null, mac= null, serial= null ;
WifiManager wifiMan = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
try {
if (PackageManager.PERMISSION_GRANTED == context.getPackageManager()
.checkPermission(Manifest.permission.READ_PHONE_STATE,
context.getPackageName())) {
deviceId = tm.getDeviceId();
}
androidId = android.provider.Settings.Secure.getString(context.getContentResolver(),
android.provider.Settings.Secure.ANDROID_ID);
mac=wifiMan.getConnectionInfo().getMacAddress();
Class<!--?--> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class, String.class );
serial = (String) get.invoke(c, "ro.serialno", "unknown" );
} catch (Exception e) {
e.printStackTrace();
}
if(TextUtils.isEmpty(deviceId )&& TextUtils.isEmpty(androidId)
&&TextUtils.isEmpty(mac)&&TextUtils.isEmpty(serial)){
return UUID.randomUUID().toString();
}
UUID deviceUuid = new UUID(androidId.hashCode(), deviceId .hashCode()| mac.hashCode()|serial.hashCode());
String uniqueId = deviceUuid.toString();
return uniqueId;
|
原文链接:http://www.apkbus.com/blog-35555-68601.html
打开App,阅读手记