`
222xiaohuan
  • 浏览: 50635 次
  • 性别: 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(完全替代IMEI),项目真实有效。

    Unity安卓生成设备唯一UUID

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

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

    android设备唯一标识生成方法.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

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

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

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

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

    Android2Unity.zip

    当下获得安卓设备唯一标识符近乎完美的方案.Android_id,IMEI,android.os.Build

    alicloud-android-utdid-1.1.5.4.jar

    这个库是阿里的设备标识生成库alicloud-android-utdid-1.1.5.4.jar,主要用于生成获取Android设备的唯一标识符

    基于Android的木马检测引擎的研究与实现

    为此 ,提出了一套特征码提取检测 算法 (FCPA),FCPA通过调用 Android系统库 函数获取恶意文件的源路径,利用源路径找到相应文件并对文件进行散列处理 ,获取文件特征信 息,生成一个唯一标识该木马病毒的特征值 ,然后...

    Android10获取唯一ID最佳做法

    对于实例 ID 不实用的情况,您还可以使用自定义全局唯一 ID (GUID) 对应用实例进行唯一标识。最简单的方式是使用以下代码生成您自己的 GUID。  1.Kotlin写法 var uniqueID = UUID.randomUUID().toString() 2.Java...

    基于Android的即时通讯系统的设计与实现.docx

    其中登陆注册功能分别会在后台环信服务器进行验证,并且生成用户的唯一标识——环信ID;好友管理功能实现了添加好友、删除好友、加入黑名单等功能;会话聊天功能实现了用户之间的私密聊天以及群组内部的交流,支持...

    自定义统计SDKTcStatInterface.zip

    读取手机状态和身份,用于获取设备的唯一标识,为当前设备生成一个唯一设备ID。 查看Wifi状态权限,用于获取mac地址,生成设备唯一标示。 获取用户地理位置信息,用于获取精准确的地理位置,变于统计用户分布情况。...

    基于Android的毕业论文管理系统的设计与研究.docx

    其中教师和学生用户的编号都要能唯一标识出人物身份。管理员、教师和学生用户的都应该是一个非空集合。论题和论文中必须还有基于Android的毕业论文管理系统的设计与研究全文共6页,当前为第3页。基于Android的毕业...

    Android 项目正式签名打包教程分享

    在 run 的时候就是将我们所写的代码打包为 apk 文件,打包就是根据签名、标识等信息生成的一个安装包,我们在包里嵌入作者的信息、公司信息等,可以具有唯一的辨识行为,同时也可以维护版权利益等。 提到签名,我们...

    Android使用token维持登陆状态的方法

    token(令牌)是一串唯一的字符串,通常由服务端生成,在注册完成时返回给客户端,用来标识此用户,客户端将此字符串存储在本地。在以后的网络请求时,客户端先查询本地的token,如果有则直接使用此令牌进行网络请求...

    网络视听收视大数据技术规范-数据元素集.pdf

    7 媒资数据 7.1 节目 ID ContentID 用于唯一标识网络视听节目的一组编码。 7.2 节目一级类别 ContentType1 互联网视听平台的节目所属于的一级分类,如电影、电视剧、综艺等。 7.3 节目二级类别 ContentType2 互联网...

    multi-channels-packaging:这是一个很棒的工具,可以为Android打包多渠道apk

    为了统计这些市场的效果(活跃度,下载量等),需要有一种方法唯一标识它们。 每次发版本,产品部都会提供一个渠道列表,Android开发者会根据这些渠道相应地生成渠道包,随着渠道越来越多,客户端如果都是机械手动去...

    微信JS-SDK接口JS文件 jweixin-1.4.0.js

    appId: '', // 必填,企业号的唯一标识,此处填写企业号corpid timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名,见附录1 jsApiList: [] // ...

Global site tag (gtag.js) - Google Analytics