zoukankan      html  css  js  c++  java
  • Android能够获取到唯一的设备ID吗?

    Android是否有唯一的设备ID,如果有的话,该怎样快速有效获取?

    Settings.Secure#ANDROID_ID 返回Android ID ,是一个64位的16进制字符串

    1
    2
    3
    import android.provider.Settings.Secure;
     
    private String android_id = Secure.getString(getContext().getContentResolver(),Secure.ANDROID_ID);

    关于这个问题有很多的答案,不过其中大部分将只能算是答对了一部分,还不够好。

    根据我在很多设备上的测试(所有的电话,至少有一个是无效的)

    1. 所有设备针对 TelephonyManager.getDeviceId() 测试都有返回值
    2. 所有GSM设备(都有SIM卡)针对 TelephonyManager.getSimSerialNumber() 测试都有返回值
    3. 所有CDMA设备针对 getSimSerialNumber() 测试返回 NULL(预期中的)
    4. 所有有谷歌帐户的设备都返回了 ANDROID_ID 值
    5. 所有的CDMA设备针对 ANDROID_ID 和 TelephonyManager.getDeviceId() 都返回相同的值(或派生自同一个值) - 前提是安装过程中已经添加了谷歌帐户。
    6. 我还没有机会测试没有SIM卡的GSM设备,没有谷歌账户的GSM设备,以及任何在飞行模式下的设备。
    所以,如果你想要得到设备本身的唯一值, TM.getDeviceId()应该是足够了。不过显然的,有些用户比其他人更加偏执一些,可以将这些标识中的一个或者多个进行hash运算就很有用,生成的字符串仍然可以唯一标识该设备,但是不会明确的标识实际的设备。例如,使用String.hashCode(),再加上一个UUID:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
     
    final String tmDevice, tmSerial, androidId;
    tmDevice = "" + tm.getDeviceId();
    tmSerial = "" + tm.getSimSerialNumber();
    androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
     
    UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
    String deviceId = deviceUuid.toString();

     

    结果可能类似 :00000000-54b3-e7c7-0000-000046bffd97

    对我来说这种方式已经足够了

    别忘了增加权限,用于读取 TelephonyManager properties,在manifest 中增加下面一行:

    1
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

     


  • 相关阅读:
    css移除a标签及map、area(图片热区映射)点击过后的边框
    PDA后台运行、安装程序
    如何通过.Net Compact Framework来获得应用程序的当前路径
    mysql 实现row_number,获取上一条,下一条
    关于神经网络算法的 Python例程
    C# Windows Service 用代码实现安装、运行和卸载服务的方法
    sql server 递归查询的使用
    sql server 行转列及列转行的使用
    数据库索引优化
    LiveCharts 提示框(DataTooltip)百分比一直为0.00%解决办法
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6469633.html
Copyright © 2011-2022 走看看