Android获取设备ID号
Android获取设备ID号
Android有多种方式可以获取设备ID,但是每一种总会有一点限制,为此,整合几种方式在一起,这样就万无一失了
public class DeviceIdFactory {
protected static final String PREFS_FILE = "device_id.xml";
protected static final String PREFS_DEVICE_ID = "device_id";
protected static volatile UUID uuid;
private static volatile DeviceIdFactory mInstance;private DeviceIdFactory(Context context) {if (uuid == null) {synchronized (DeviceIdFactory.class) {if (uuid == null) {final SharedPreferences prefs = context.getSharedPreferences(PREFS_FILE, 0);final String id = prefs.getString(PREFS_DEVICE_ID, null);if (id != null) {// Use the ids previously computed and stored in the// prefs fileuuid = UUID.fromString(id);} else {final String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);try {if (!"9774d56d682e549c".equals(androidId)) {uuid = UUID.nameUUIDFromBytes(androidId.getBytes("utf8"));} else {if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {String serial = null;try {serial = Build.class.getField("SERIAL").get(null).toString();} catch (IllegalAccessException e) {e.printStackTrace();} catch (NoSuchFieldException e) {e.printStackTrace();}String m_szDevIDShort = "35" + (Build.BOARD.length() % 10) + (Build.BRAND.length() % 10) + (Build.CPU_ABI.length() % 10) + (Build.DEVICE.length() % 10) + (Build.MANUFACTURER.length() % 10) + (Build.MODEL.length() % 10) + (Build.PRODUCT.length() % 10);uuid = new UUID(m_szDevIDShort.hashCode(), serial.hashCode());} else {final String deviceId = ((TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();uuid = deviceId != null ? UUID.nameUUIDFromBytes(deviceId.getBytes("utf8")) : UUID.randomUUID();}}} catch (UnsupportedEncodingException e) {throw new RuntimeException(e);}// Write the value out to the prefs fileprefs.edit().putString(PREFS_DEVICE_ID, uuid.toString()).commit();}}}}
}public static DeviceIdFactory getInstance(Context context) {if (mInstance == null) {synchronized (DeviceIdFactory.class) {if (mInstance == null) {mInstance = new DeviceIdFactory(context);}}}return mInstance;
}public String getDeviceUuid() {TLog.v("DeviceId","getDeviceUuid "+uuid.toString());return uuid.toString();
}
}
Android获取设备ID号相关推荐
- Android 获取设备ID,手机厂商,运营商,联网方式,获取系统语言,获取时区
权限 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 安卓6.0需动态获取 ...
- android 获取设备id 崩溃,获取Android设备ID时出错
我正在尝试在我的Android应用中检索我的adroid设备的设备ID.但是,在我的程序中添加以下行后,错误存在并且程序无法启动: String ts = Context.TELEPHONY_SERV ...
- android 获取设备串号,Android获取设备IMEI和Mac地址
释放双眼,带上耳机,听听看~! public static boolean checkPermission(Context context, String permission) { boolean ...
- Android 获取设备号
前言 最近在对接口的时候 根据后台要求生成设备唯一id 作为key android 获取设备号比较简单 这里记录一下 实现 /*** 获取设备号* @param context* @return*/p ...
- Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)
Android获取设备各项信息(设备id.ip地址.APP应用名称.设备名称.运行商.品牌.型号.分辨率.处理器.国家码.系统语言.网络类型.oaid.android版本.操作系统版本.mac地址.应 ...
- android设备id完美解决方法,安卓获取渠道名渠道id Android获取设备唯一标识的终极解决方法,防止安卓7.0时崩溃问题...
一,先说获取渠道名(这里以友盟为例) /* * 4.5.1新加渠道名字段,用来传给后台去统计各个渠道下载量 * */ public static String getSource() { //获取渠道 ...
- android 使用kotlin 获取设备id
在 Android 中,获取设备的唯一标识符是一项常见的任务.以下是使用 Kotlin 语言获取设备 ID 的步骤: 1. 在 AndroidManifest.xml 文件中添加以下权限: <u ...
- 工具篇——DeviceIDUtil(获取设备ID)
写代码的四点: 1.明确需求.要做什么? 2.分析思路.要怎么做?(1,2,3--) 3.确定步骤.每一个思路要用到哪些语句.方法和对象. 4.代码实现.用具体的语言代码将思路实现出来. 学习新技术的 ...
- Android 获取设备各种信息以及其它
做手机开发,想必都希望获取手机号码吧,android中有一个类android.telephony.TelephonyManager提供这个功能. TelephonyManager tm = (Tele ...
最新文章
- kux格式怎么转换成mp4?简单快速的视频转换技巧分享
- SwipeBackActivity 的使用
- python之路---03 整型 bool 字符串 for循环
- 神经网络简史:BP算法后的又一突破—信念网络
- Ubuntu开发之旅一---安装初步
- python-面向对向-实例方法的继承
- 拿4k的前端开发都会做些什么?
- bzoj 1047 理想的正方形
- java RandomAccessFile类(随机访问文件)
- 解决AxureRP经常性损坏问题
- 【杂谈】为了子孙后代,请不要逃离大城市或者龟缩在三四线小城市
- android圆形图片裁剪demo以及实现
- IntelliJ IDEA 在使用manven后的纠结(每次修改代码都要重启tomcat才能看效果吗?),请各位大侠来看看问题
- Two Graphs
- 计算机毕业设计Java医院管理系统(系统+源码+mysql数据库+Lw文档)
- 多重共线性是如何影响回归模型的
- JS中如何取某个指定字符(前)后的字符串
- php generator 风雪,PHP 生成器Generator理解
- 软件设计师笔记之信息安全知识
- 8.17vue项目搜素框的实现
热门文章
- GHGL项目-其他问题锦集
- PIC16F877A单片机 (中断与定时器Timer2)
- m_sequencer和p_sequencer
- 【微信小程序】云函数入门(保姆级别)
- phoenxi elixir 框架几个方便的命令
- ndims matlab,MATLAB的size(),length(),ndims()函数
- vue开发h5 公众号
- 广讯通系统地址和服务器,广讯通OA办公系统
- Vue+Vux实现登录
- python和c++情侣网名_python与C或者C++的混合编程