在android中使用电话管理器查找IMEI号码
我对Android开发非常陌生。 我想找到手机的IMEI号码并使用“android.telephony.TelephonyManager;” 现在编译器说。 无法将上下文解析为变量。 有人能帮我吗?我错过了哪一步在android中使用电话管理器查找IMEI号码,android,imei,Android,Imei,我对Android开发非常陌生。 我想找到手机的IMEI号码并使用“android.telephony.TelephonyManager;” 现在编译器说。 无法将上下文解析为变量。 有人能帮我吗?我错过了哪一步 我还将用户权限包含在XML中。验证您的导入,您应该导入:android.content.Context 然后使用以下代码: TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVI
我还将用户权限包含在XML中。验证您的导入,您应该导入:
android.content.Context
然后使用以下代码:
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
// get IMEI
String imei = tm.getDeviceId();
//get The Phone Number
String phone = tm.getLine1Number();
或直接:使用以下命令:
TelephonyManager tm = (TelephonyManager) getSystemService(android.content.Context.TELEPHONY_SERVICE);
编辑:*您应该将上下文传递给构造函数上的新类:*
在您的活动中,实例化您的类并将上下文传递给它,如下所示:
YourClass instance = new YourClass(this);
String IMEI = instance.getIMEINumber();
对于编译器错误“上下文无法解析为变量”,请确保已导入
android.content.Context
package在Eclipse中,当您将鼠标指针移到代码中的错误行上时,快速修复程序就会出现此问题。
并确保您已添加了
READ\u PHONE\u STATE
权限管理文件。只需删除上下文中的上下文
关键字。电话服务
并进行检查
TelephonyManager tManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String IMEI = tManager.getDeviceId();
添加此代码:
TelephonyManager manager=(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String deviceid=manager.getDeviceId();
//Device Id is IMEI number
Log.d("msg", "Device id"+deviceid);
显示
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
[如果有人仍然在这里寻找这个仍然存在的古老解决方案,请注意] 好吧,TelephonyManager.getLine1Number()由于运算符的各种限制而不可靠。 有一些基于java反射的黑客,但因设备而异,因此这些黑客毫无用处[至少在支持的模型方面如此] 但是如果你真的需要的话,找到这个数字是有合法逻辑的。通过短信提供商查询所有短信,并获取“收件人”号码 这个技巧的额外好处:1。如果设备中有多个sim卡,则可以获取所有线路号码 缺点:1。您需要SMS_读取权限[对此表示抱歉]
2.您将获得设备中使用过的所有sim卡号码。这个问题可以通过一些约束逻辑来最小化,例如时间框架(仅在今天接收或发送短信)等。听听其他人如何改进这种情况会很有趣。试试下面的代码,它将帮助您获取设备IMEI号
public String getDeviceID() {
String deviceId;
TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (mTelephony.getDeviceId() != null) {
deviceId = mTelephony.getDeviceId();
} else {
deviceId = Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID);
}
return deviceId;
}
同时在清单中授予读取电话状态权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
现在没问题,但下次先仔细阅读问题,然后以适当的方式给出答案我已经仔细阅读了问题,在编辑之前我已经阅读过了,问题是:获取IMEI编号,这没有更详细的说明:)他被问到的问题带有示例代码,现在有问题,但格式不好,所以我只是添加了他的问题。。但他用示例代码提问。。还有一件事,兄弟,我不想和你吵架,我只是建议你别再吵了。哈哈,我也是,我不是在和你吵架,来吧!!!我也只是告诉你们,我已经仔细阅读了问题,谢谢你们的建议:)谢谢大家,我没有导入安卓。内容。上下文。
public String getDeviceID() {
String deviceId;
TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (mTelephony.getDeviceId() != null) {
deviceId = mTelephony.getDeviceId();
} else {
deviceId = Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID);
}
return deviceId;
}
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>