首页 文章 精选 留言 我的

精选列表

搜索[智能扫码],共10000篇文章
优秀的个人博客,低调大师

Android开发 - 获取Android设备的唯一标识码(Android 6.0或更高)

在我们的APP开发中,通常需要获取到设备的唯一标识。在Android6.0之前,有很多方法我们可以方便获取到硬件的唯一标识,但是在Android6.0之后,Android系统大幅限制了我们获取设备的硬件信息。 Android6.0之前的方法(已过时) DEVICE_ID 通getSystemService(Context.TELEPHONY_SERVICE).getDeviceId()获取,但是6.0之后必须申请READ_PHONE_STATE,并且获取到的这个值在不同的厂商和设备中并不可靠。 MAC地址 这个是无线网卡的MAC地址,这个需要ACCESS_WIFI_STATE权限,并且很多情况下并获取不到这个值,也并不是十分可靠。 ANDROID_ID 这个值是当一个新的设备第一次启动时,或者恢复出厂设置时,系统会生成一个64位的数字,这个值目前(Android4.0之后)已经非常可靠,但是仍有个别厂商的定制系统的BUG,导致这个值返回null。 获取设备唯一标识的正确姿势 由于ANDROID_ID的值相对稳定和可靠,并且不需要申请权限,所以我们获取设备的唯一标识应该使用这个值,同时我们应该考虑到一些极端情况和安全问题。 获取ANDROID_ID public static String getAndroidID() { String id = Settings.Secure.getString( Utils.getApp().getContentResolver(), Settings.Secure.ANDROID_ID ); return id == null ? "" : id; } 构造UUID,防止直接暴露ANDROID_ID private static String getDeviceUUid() { String androidId = DeviceUtils.getAndroidID(); UUID deviceUuid = new UUID(androidId.hashCode(), ((long)androidId.hashCode() << 32)); return deviceUuid.toString(); } 考虑极端情况,我们自己生成一个应用级别的UUID 这种情况我们需要将生成的UUID保存到SharedPreference中,只要应用不被卸载或者清除数据,这个值就不会变。 private static String getAppUUid() { String uuid = SPUtils.getInstance().getString(PREF_KEY_UUID); if (TextUtils.isEmpty(uuid)) { uuid = UUID.randomUUID().toString(); //这里需要保存到SharedPreference中 ... } return uuid; } 将上面的获取方法封装到一个方法中 public static String getUUID() { String uuid = getDeviceUUid(); if (TextUtils.isEmpty(uuid)) { uuid = getAppUUid(); } return uuid; } 总结 这些获取UUID方法非常简单,并且在应用的开发中可以满足99%的需求,不需要动态申请权限,也非常可靠,但是在使用时需要清楚其生成过程,以便应用到安全性要求非常高的场景中。 如有更多疑问,请参考我的其它Android相关博客:我的博客地址

优秀的个人博客,低调大师

为了讨好程序员,阿里云和 Costa 开了家码农咖啡馆

5 月 11 日,阿里云和 Costa 联合开出程序员主题咖啡馆,一家在阿里巴巴西溪园区,另一家在杭州的云溪小镇,都是程序员扎堆的地方。 在这家程序员主题咖啡店里,提供阿里云和 Costa 联合研发的程序员定制咖啡“Apsara Coffee”(Apsara 是阿里云飞天系统),口感上比拿铁更苦一些,萃取18%-22% 的最佳可溶浓度段。当然,上面还有一个大大的阿里云 logo 的拉花。 目前在杭州、上海、苏州、深圳、厦门、成都六个城市的 20 多家 Costa 门店中可以买到这杯 Apsara Coffee。 “我们希望起到更加提神的效果,但(考虑到健康的因素)也不想把它做的太浓。”根据张海平的说法,阿里云主要承担了对程序员口味的调研和测试工作,为 Costa 的研发工作提供参考。 除了程序员文化的门店装饰(触目可及的键盘、鼠标、代码),咖啡店内还设有一块“程序员挑战版”,程序员可以在上面出题,进行代码接龙,成功解题的客人可以带走一个定制咖啡杯。 “我们做这个项目的初衷是因为(阿里云)面对的是开发人群,我们希望提升品牌好感度,所以我们就去观察这些人喜欢什么。”阿里云品牌经理张海平告诉《好奇心日报(www.qdaily.com)》,程序员对咖啡的需求是他们找到的一个接触点。 这个项目从去年 9 月在阿里云内部被提出,在 10 月份的云溪大会上首次尝试。“我们当时就是请 Costa 过来卖咖啡,然后在他们一款原有的摩卡上略作调整,打上阿里云的 logo,后来发现大家都挺喜欢这个点子的。” 而对于 Costa 来说,咖啡本是个大众消费品,要针对某一特定人群去贩卖咖啡也是之前没有尝试过的事情,“双方磨合了挺长时间,但 Costa 方面对这个想法还是挺兴奋的。” 接下来,阿里云还希望在咖啡馆里引入大数据的应用,代替人工来收集程序员对咖啡馆的偏好,包括接入阿里云的会员体系,用阿里云的会员券兑换 Apsara 咖啡。 截止 2016 年第三季度,阿里云目前有 76.5 万付费用户。“品牌发展到现在这个阶段,越来越需要个性化的存在。”张海平表示,这并不是一个临时性质的快闪活动,阿里云希望持续地推进这个项目。 从阿里和 Costa 联合做这场营销的角度来说,这是个还不错的噱头。但每个人都咖啡口味都有自己的偏好,从这个角度来说,程序员并没有什么特别的。 而是否能从讨好程序员的角度,去让更多人感兴趣,也要打个问号。 本文转自d1net(转载)

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册