android - 如何通过代码编程获取设备的 IMEI/ESN 号码 但是在 android > 6

标签 android android-6.0-marshmallow android-permissions imei

My Android version is Marshmallow 6.0

如何以编程方式在 android > 6 中查找/获取 imei 号码。

注意:我在 AndroidManifest.xml 文件中添加了 READ_PHONE_STATE 权限。

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

在 MainActivity 中

TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String deviceid = manager.getDeviceId();

//Device Id is IMEI number

Log.d("msg", "Device id " + deviceid);

最佳答案

My Android version is Marshmallow 6.0

注意:您需要运行时权限

我在 AndroidManifest.xml 文件中添加了 READ_PHONE_STATE 权限。

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

在主 Activity 中:

private static final int PERMISSIONS_REQUEST_READ_PHONE_STATE = 999;

private TelephonyManager mTelephonyManager;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE)
            != PackageManager.PERMISSION_GRANTED) {
        requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE},
                PERMISSIONS_REQUEST_READ_PHONE_STATE);
    } else {
        getDeviceImei();
    }
....

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,
                                       int[] grantResults) {
    if (requestCode == PERMISSIONS_REQUEST_READ_PHONE_STATE
            && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        getDeviceImei();
    }
}

private void getDeviceImei() {

    mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    String deviceid = mTelephonyManager.getDeviceId();
    Log.d("msg", "DeviceImei " + deviceid);
}

关于android - 如何通过代码编程获取设备的 IMEI/ESN 号码 但是在 android > 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39385672/

相关文章:

android - Firebase 处理断开与数据库的连接

android - 如何忽略 Android 中的测试用例?

android - 即使我清除数据并从 6.0.1 设备删除应用程序,Sqlite 数据库仍然存在

android - Cordova android 插件中的 onRequestPermissionsResult

android - 获取操作 GET_CONTENT 的文件路径

Android 6.0 棉花糖 : Weird error with fragment animation

permissions - 从 Android M nexus 6 上的设置启用/禁用权限后,应用程序被杀死

android - 在 Debug模式下自动授予运行时权限

Android 写入具有错误权限的文件

android - 从 Android 应用程序运行 USSD 代码时出现 MMI 代码错误