Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中使用电话管理器查找IMEI号码_Android_Imei - Fatal编程技术网

在android中使用电话管理器查找IMEI号码

在android中使用电话管理器查找IMEI号码,android,imei,Android,Imei,我对Android开发非常陌生。 我想找到手机的IMEI号码并使用“android.telephony.TelephonyManager;” 现在编译器说。 无法将上下文解析为变量。 有人能帮我吗?我错过了哪一步 我还将用户权限包含在XML中。验证您的导入,您应该导入:android.content.Context 然后使用以下代码: TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVI

我对Android开发非常陌生。 我想找到手机的IMEI号码并使用“android.telephony.TelephonyManager;”

现在编译器说。 无法将上下文解析为变量。 有人能帮我吗?我错过了哪一步
我还将用户权限包含在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"/>