9
A
回答
12
从docs:
getDeviceId()
返回唯一的设备ID,用于 例如,IMEI对于GSM和CDMA手机的MEID 。如果设备 ID不可用,则返回null。
1
设备ID仅用于在您启动时通过将您的手机与Google帐户关联,即在仿真器上不可用的情况下注册Market的情况下才可用。这似乎已经改变了Android 2.2,其中一个是为模拟器生成的。我不认为它与IMEI,ICC或任何其他与电话相关的令牌相关联,而是Google网络服务为识别您的手机而生成的伪唯一令牌。
8
这是很容易得到Android的UDID - 看看下面的代码:
public class DemoActivityActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
Log.d(">>>>", "Android ID: " + Secure.getString(getContentResolver(), Secure.ANDROID_ID));
Log.d(">>>>", "Device ID : " + tm.getDeviceId());
}
为获得设备ID,你必须设置下列权限在AndroidManifest.xml:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
对于获取Android ID无需设置任何权限。
1
我实现了一个类来获得IMEI/WIFI MAC地址/设备ID,希望对你有用^^
public class DeviceInfo {
protected static String imeiNumber;
protected static String wifiMacAddress;
protected static String deviceID;
// This method must be called before other method
public static void init(Context context) throws Exception {
imeiNumber = getImei(context);
wifiMacAddress = getWifiMacAddress(context);
deviceID = getDeviceId(context);
}
public static String getDeviceInfo() {
return deviceID;
}
public static String getImei() {
return imeiNumber;
}
public static String getWifiMacAddress() {
return wifiMacAddress;
}
public static String getModel() {
return Build.MODEL;
}
public static String getOsVersion() {
return Build.VERSION.RELEASE;
}
protected static String getDeviceId(Context context) throws Exception {
String imei = getImei(context);
if (imei != null) return imei;
String tid = getWifiMacAddress(context);
return tid;
}
protected static String getWifiMacAddress(Context context) throws Exception {
WifiManager manager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = manager.getConnectionInfo();
if (wifiInfo == null || wifiInfo.getMacAddress() == null)
return md5(UUID.randomUUID().toString());
else return wifiInfo.getMacAddress().replace(":", "").replace(".", "");
}
protected static String getImei(Context context) {
TelephonyManager m = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
String imei = m != null ? m.getDeviceId() : null;
return imei;
}
protected static String md5(String s) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(s.getBytes());
byte digest[] = md.digest();
StringBuffer result = new StringBuffer();
for (int i = 0; i < digest.length; i++) {
result.append(Integer.toHexString(0xFF & digest[i]));
}
return (result.toString());
}
}
+0
添加以上代码的权限。
相关问题
- 1. Iphone UDID和Android ID
- 2. iPad或iPhone的Hack UDID
- 3. 派生UDID从iPhone序列#
- 4. 在Prefrences/Settings上显示iPhone UDID?
- 5. 通过UDID替代iPhone设备识别
- 6. iPhone UDID和谷歌Analystics(分析)
- 7. 注册挑战从iPhone中检索UDID
- 8. 提供iPhone UDID的私人iPhone应用程序分配?
- 9. iphone设备UDID,iphone设备ID和iphone设备标记有什么区别?
- 10. iPhone的UDID有一个集成的校验和
- 11. 如何在iPhone上生成一个好的,不变的UDID
- 12. Android/iPhone图像解析
- 13. 如何使用Phonegap获取iPhone的唯一标识符(UDID)?
- 14. 在运行时检测iPhone上的UDID欺骗
- 15. 是否允许将iPhone UDID传输到我的服务器?
- 16. iPhone/iPad的唯一标识符BESIDES UUID/UDID?
- 17. 如何从iPhone发送的http请求获取UDID?
- 18. UDID替换?
- 19. Android的等效iPhone的默认图像
- 20. 使用UDID的Worklight Push:Apple块UDID - 它会工作
- 21. iPhone和Android中的图像兼容性
- 22. 是否可以从iPhone safari浏览器获取UDID?
- 23. iPhone Enterprise程序是否允许无限制使用UDID?
- 24. Android上的按钮在iPhone上的滑动效果就像iPhone?
- 25. 没有访问UDID
- 26. 持续UDID替代
- 27. 配置文件的新UDID
- 28. 如何在我的android手机上找到我的UDID?
- 29. 如何在Android中获得持久的udid?
- 30. 通过adobe air获取Android设备的UDID
重复:http://stackoverflow.com/questions/2785485/is-there-a -unique-android-device-id 另一个:http://stackoverflow.com/questions/3115918/android-unique-id/3116243#3116243 – ognian 2010-07-12 07:10:55