有关获取android唯一识别号IMEI的问题

本文讲述了在Android开发中如何获取IMEI作为设备唯一标识,用于不同手机间的socket通信。通过分析Activity和Context的关系,解决了在子线程中获取IMEI的问题。同时,指出了getDeviceId()与getSubscriberId()的区别,并提醒开发者注意IMEI可能为14位的情况。
摘要由CSDN通过智能技术生成

最近开发一个项目需要两个手机app互相通信,在一个手机不同的app之前通信可以用aidl,在不同的手机通信就需要用到网络(除通过运营商之外),我用的是socket通信,那么涉及到一个问题,服务器收到了某客户端发来的消息后到底转发给哪个手机的客户端呢,于是就想到了找到android手机的唯一识别号,有很多方式获得对一部手机的标识,但是获得手机的IMEI是误差最小的,也有可能获取不到的情况,但概率非常小,获得IMEI的代码如下

TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
 imei = TelephonyMgr.getDeviceId();

最初我是在oncreate方法里获得的,自然没问题,后来随着需求改变,我需要在与服务器通信一个子线程中得到activty中获得的IMEI,首先想到新建了一个java文件(之后仔细一想这是个错误的思路,直接用hundler就好了啊,但是这个错误的思路带给我一个新的问题,使我更深入的了解了context),专门用来获得IMEI,但是这个方法出错了

才发现是因为

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android系统中,IMEI(International Mobile Equipment Identity)是一个唯一设备标识码,用于识别移动设备。在Android 10及以上版本中,获取IMEI需要满足一定的权限限制。以下是获取IMEI的步骤: 1. 在AndroidManifest.xml文件中添加权限: ```xml <uses-permission android:name="android.permission.READ_PHONE_STATE" /> ``` 2. 在代码中获取IMEI: ```java import android.content.Context; import android.telephony.TelephonyManager; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取TelephonyManager实例 TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); // 检查权限 if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { // 获取IMEI String imei = telephonyManager.getImei(); // 在Android 10及以上版本中,getImei()方法已被弃用,可以使用getDeviceId()方法代替 // String imei = telephonyManager.getDeviceId(); // 使用IMEI进行后续操作 // ... } else { // 请求权限 requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, 1); } } } ``` 请注意,获取IMEI需要在AndroidManifest.xml文件中添加相应的权限,并且在运行时动态请求权限。另外,从Android 10开始,getImei()方法已被弃用,可以使用getDeviceId()方法代替。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值