`
222xiaohuan
  • 浏览: 53516 次
  • 性别: Icon_minigender_2
  • 来自: 苏州
社区版块
存档分类
最新评论

android生成唯一设备标识

 
阅读更多

原文地址:

http://blog.csdn.net/ljz2009y/article/details/22895297

 

完整代码:

 

package com.example.emily.uniqueid;

import android.bluetooth.BluetoothAdapter;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.widget.TextView;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MainActivity extends AppCompatActivity {
    private TextView uuid;

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
uuid = (TextView) findViewById(R.id.uuid);

//The IMEI: 仅仅只对Android手机有效:
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String m_szImei = TelephonyMgr.getDeviceId();

//Pseudo-Unique ID, 这个在任何Android手机中都有效
String m_szDevIDShort = "35" +
                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

        //3. The Android ID
String m_szAndroidID = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);

//4. The WLAN MAC Address string
WifiManager wm = (WifiManager)getSystemService(MainActivity.WIFI_SERVICE);
String m_szWLANMAC = wm.getConnectionInfo().getMacAddress();

//5. The BT MAC Address string
BluetoothAdapter m_BluetoothAdapter = null; // Local Bluetooth adapter
m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String m_szBTMAC = m_BluetoothAdapter.getAddress();

String m_szLongID = m_szImei + m_szDevIDShort
                + m_szAndroidID+ m_szWLANMAC + m_szBTMAC;
// 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();

String m_szLongID_out = m_szImei + "*****" + m_szDevIDShort
                + "*****" + m_szAndroidID + "*****" + m_szWLANMAC + "*****" + m_szBTMAC;

uuid.setText(m_szLongID_out + "---" + m_szUniqueID);

}
}

 

xml文件里面加下权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.INTERNET"/>

 

结果截图



 

 

 

 

 

 

 

 

 

 

  • 大小: 60.7 KB
分享到:
评论
1 楼 jstl1point0 2016-06-27  
好强的算法啊,
蓝牙和wifi的地址获取需要开启的哦,如果不开是空的,这2个不能作为唯一值来定

相关推荐

    android设备唯一标识生成方法

    imei是设备的一个编号值,获取比较方便,不过有些设备的设备编号获取不到,...UUID生成的原理,先获取设备的标识信息,如果能够获取到就使用该获取到的值,否则就生成一个随机数,然后通过缓存和文件的方式保存这个值。

    Android生成唯一标识符UUID(完全替代IMEI)

    总的来说,当需要在Android应用中生成设备唯一标识时,UUID是一个可行且相对隐私友好的选择。然而,开发者应根据具体应用场景权衡其优点和缺点,例如是否需要跨应用或设备重装后的持久性,以及对隐私保护的需求。在...

    Android设备获取唯一标识码的方法

    在Android系统中,开发者经常需要获取设备的唯一标识码来实现一些特定的功能,例如用户跟踪、数据同步或者设备注册等。然而,随着Android系统的更新,为了保护用户隐私,获取设备唯一标识的方式也在不断变化。本篇...

    Android手机唯一标识

    在Android操作系统中,寻找一个设备的唯一标识是一个常见的需求,特别是在开发移动应用或者进行设备跟踪时。然而,Android系统并没有提供一个内置的、始终不变的唯一标识符,因为考虑到用户隐私和安全问题。"Android...

    android设备唯一标识生成方法.rar

    本资源“android设备唯一标识生成方法.rar”提供了一些可能的实现方式,但请注意,由于不同Android版本和设备之间的差异,这些方法可能需要根据实际情况进行调整。下面将详细介绍几种常见的Android设备唯一标识生成...

    Unity安卓生成设备唯一UUID

    Unity生成设备唯一UUID,代码+样例

    唯一标识一台Android设备

    在Android系统中,唯一标识设备是开发者经常遇到的需求,用于追踪和区分不同的用户设备。本文将深入探讨如何在Android平台上获取设备的唯一标识,并且解释这些标识的特性、使用场景以及可能遇到的问题。 首先,我们...

    android手机获取唯一标识的方法

    第一种方式是获取IMEI,但是有的手机如果不是正品的话,就获取不到所以通过这一种方式还是会出现有的设备是没有唯一标识的 第二种方式获取手机卡的序列号,当然这种也不是唯一的,因为有的手机是双卡双待的所以可能...

    浅谈android获取设备唯一标识完美解决方案

    本文介绍了浅谈android获取设备唯一标识完美解决方案,分享给大家,具体如下: /** * deviceID的组成为:渠道标志+识别符来源标志+hash后的终端识别符 * * 渠道标志为: * 1,andriod(a) * * 识别符来源...

    Delphi跨平台(Win,Android,IOS)获取设备唯一标识符

    2. Android:Android系统提供了多种获取设备唯一标识的方法。IMEI(International Mobile Equipment Identity)是手机硬件的唯一标识,而ANDROID_ID则是设备软件层面的一个16进制字符串。由于隐私问题,Android也...

    获取Android移动终端设备唯一ID.zip

    在Android系统中,获取移动终端设备的唯一标识是开发者经常需要进行的一项操作,这有助于跟踪设备、推送个性化服务或者实施安全策略。本资料"获取Android移动终端设备唯一ID.zip"聚焦于这一主题,旨在帮助开发者了解...

    Android中获取唯一的ID的几种方法

    对于连接Wi-Fi的设备,MAC地址曾是另一种获取唯一标识的方式。然而,由于隐私原因,从Android 6.0(API级别23)开始,系统会随机生成一个连接Wi-Fi时使用的MAC地址,因此它不再可靠。如果需要,可以尝试获取,但需...

    获取手机唯一标识

    在Android开发中,获取手机的唯一标识是一个常见的需求,用于区分不同的设备,便于数据分析或个性化服务。Android系统提供了多种方式来获取设备的标识,但随着系统版本的更新和隐私保护政策的变化,这些方法的可用性...

    Android-一个获取Android设备唯一id的工具类

    总之,`DeviceIDUtils`是一个方便的工具,它帮助Android开发者轻松获取设备的唯一标识,适应各种设备和系统版本的变化,同时考虑到隐私保护的最新要求。通过理解和使用这样的工具类,开发者可以更好地管理他们的应用...

    安卓设备唯一标识解决方案

    本文将详细探讨“安卓设备唯一标识解决方案”,包括国内手机厂商的开放匿名标识(OAID)、海外手机平台的安卓广告标识(AAID)以及AndroidID和GUID等常见设备标识的获取与应用。 首先,我们来了解国内的OAID(Open ...

    安卓登录注册相关-唯一标识一台Android设备手机平板手表电视.rar

    在Android开发中,登录注册是应用的基本功能,而如何唯一标识一台Android设备则是实现这些功能的关键环节。在“安卓登录注册相关-唯一标识一台Android设备手机平板手表电视.rar”这个压缩包中,可能包含了用于获取...

    Uinty获取手机端设备唯一id(设备号)GetAndroidphoneId.zip

    Uinty获取手机端设备唯一id(设备号) 使用说明 1,GetAndroidphoneId.java 这个文件放到Plugins/Android/下 2,AndroidInterface.cs是调用Java的(与java交互) 3,新建脚本-&gt;调用 AndroidInterface.GetInstance....

    获取移动设备唯一标识

    本文将详细讲解如何在Android和iOS平台上获取设备的唯一标识。 首先,我们来看看Android平台上的实现方法。在Android系统中,曾经有多种方式可以获取设备的唯一标识,如IMEI(International Mobile Equipment ...

    获取设备唯一标识符UUID

    首先,我们要明确一点:Apple出于隐私考虑,从iOS 7开始,不再推荐使用UDID(Unique Device Identifier)作为设备的唯一标识,而是提供了多个替代方案,如广告标识符(IDFA)、设备应用共享ID(Identifier for ...

Global site tag (gtag.js) - Google Analytics