【问题标题】:get the IMEI number of phone having the Android Version 8.1 as the telephonyManager.getDeviceId(); have being deprecated after Marshmallow获取具有 Android 版本 8.1 的手机的 IMEI 号码作为 telephonyManager.getDeviceId();在 Marshmallow 之后已被弃用
【发布时间】:2018-11-08 22:25:37
【问题描述】:
@SuppressLint({"MissingPermission", "NewApi"})
public void getDeviceIMEI() {
    String deviceUniqueIdentifier = null;
    String deviceImei = null;
    if (null != telephonyManager) {
        deviceUniqueIdentifier = telephonyManager.getDeviceId();
        Log.d("Output_getDeviceIMEI", deviceUniqueIdentifier + "");
    }
//   

     if (null == deviceUniqueIdentifier || 0 == deviceUniqueIdentifier.length()) {
//            deviceUniqueIdentifier = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
//            Log.d("Output_getDev_null", deviceUniqueIdentifier + "");
//        }

    if (null != telephonyManager) {
        if ( Build.VERSION.SDK_INT <= Build.VERSION_CODES.O_MR1 && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            deviceImei = telephonyManager.getImei();
            Log.d("Output_deviceImei_IMEI", deviceImei + "");
        }

    }
    if (null == deviceImei || 0 == deviceImei.length()) {
        deviceImei = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
        Log.d("Output_deviceImei", deviceImei + "");
    }

}

【问题讨论】:

  • 我的问题是“telephonyManager.getDeviceId();”这个方法在棉花糖之后不起作用,因为当我写它时,它要求我已经给出的奥利奥权限检查,但即使我无法获取 android 版本 8.1 的 IMEI 号码。
  • "telephonyManager.getDeviceId();"我的问题是这种方法在 6.0 之后不起作用,我想要 8.1 设备版本,即 oreo
  • 你已经在使用deviceImei = telephonyManager.getImei(); 还是不行?
  • 请访问此link,它与您的问题有关。
  • 如果条件错误,试试这个if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.O){deviceImei = telephonyManager.getImei();}else{deviceImei =telephonyMgr.getDeviceId();}

标签: android telephonymanager android-8.0-oreo imei android-8.1-oreo


【解决方案1】:

从 android 8 开始,您需要使用getImei(int slotIndex) 来检索设备的 IMEI。

您还需要在AndroidManifest.xml 中添加&lt;uses-permission android:name="android.permission.READ_PHONE_STATE"/&gt; 权限

记得实现权限模型在运行时请求权限,如下:

ActivityCompat.requestPermissions(MainActivity.this,
                    new String[]{Manifest.permission.READ_PHONE_STATE},
                    1);
@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case 1: {

          // If request is cancelled, the result arrays are empty.
          if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

               //continue using `getImei()` or `getDeviceId()`  
            } else {

               //Use device Id or use fallback case
            }
            return;
        }   
    }
}

【讨论】:

  • 非常感谢 SAGAR 的帮助
  • 谢谢你!我可以确认它适用于 Android 9.1 !!!
猜你喜欢
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 1970-01-01
  • 2021-11-04
  • 2012-05-27
  • 2012-08-06
  • 2014-05-09
相关资源
最近更新 更多