未经运行时权限获取IMEI号

Getting IMEI number without runtime permission

有没有办法在不实施 运行 时间许可的情况下获取 IMEI(GSM)/MEID(CDMA)? 我在 Android 中添加了以下权限,但是对于某些设备,我获得了 IMEI 编号,对于某些 Android 设备,我获得了我的 IMEI 编号,对于某些设备,我获得了异常 {Java.Lang.SecurityException : 在 Java.Interop.JniEnvironment+InstanceMethods 处获取设备 ID... 为什么我必须在 运行 时间内处理权限,尽管它们已在清单中列出?

    var telephonyManager = (TelephonyManager)Forms.Context.GetSystemService(Android.Content.Context.TelephonyService);
    if (telephonyManager != null)
    {
        sIMEI = telephonyManager.DeviceId;
    }

如果除了在 运行 时间授予权限然后获取 IMEI 之外别无他法,有人可以建议以编程方式获取 android 设备唯一 ID 的最佳方法。 (设备 ID 也应该从设备中看到) 我尝试了以下但很少有 post 提示 AndroidId 每次都不相同。

 var android_id = Android.Provider.Settings.Secure.GetString(Forms.Context.ContentResolver, Android.Provider.Settings.Secure.AndroidId);

答案是否定的,如果您 运行 使用 Marshmallow 或更高版本,那么您需要 android.permission.READ_PHONE_STATE 权限才能访问设备 ID。

或者,您可以使用以下代码生成唯一 ID -

String uniqueID = UUID.randomUUID().toString();

或者您可以按照以下 link 了解更多选项

deviceID