最近开发一个项目需要两个手机app互相通信,在一个手机不同的app之前通信可以用aidl,在不同的手机通信就需要用到网络(除通过运营商之外),我用的是socket通信,那么涉及到一个问题,服务器收到了某客户端发来的消息后到底转发给哪个手机的客户端呢,于是就想到了找到android手机的唯一识别号,有很多方式获得对一部手机的标识,但是获得手机的IMEI是误差最小的,也有可能获取不到的情况,但概率非常小,获得IMEI的代码如下
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
imei = TelephonyMgr.getDeviceId();
最初我是在oncreate方法里获得的,自然没问题,后来随着需求改变,我需要在与服务器通信一个子线程中得到activty中获得的IMEI,首先想到新建了一个java文件(之后仔细一想这是个错误的思路,直接用hundler就好了啊,但是这个错误的思路带给我一个新的问题,使我更深入的了解了context),专门用来获得IMEI,但是这个方法出错了
才发现是因为