Есть ли альтернативный способ получения номера IMEI, который не даст мне устаревшее предупреждение? - PullRequest
0 голосов
/ 10 мая 2018

Привет, я хочу получить номер IMEI в моем устройстве Android. И я могу это сделать . Но Я получаю устаревшее предупреждение о том, что « TelephonyManager.DeviceId» устарело: «устарело» . Я использую этот код для получения номера IMEI на устройстве Android

Android.Telephony.TelephonyManager mTelephonyMgr;
        mTelephonyMgr = (Android.Telephony.TelephonyManager)Forms.Context.GetSystemService(Android.Content.Context.TelephonyService);

        return mTelephonyMgr.DeviceId;

прямо сейчас я могу отключить устаревшее предупреждение с помощью

     mTelephonyMgr = (Android.Telephony.TelephonyManager)Forms.Context.GetSystemService(Android.Content.Context.TelephonyService);
#pragma warning disable CS0618 // Type or member is obsolete
            return mTelephonyMgr.DeviceId;
#pragma warning restore CS0618 // Type or member is obsolete

Но почему я получаю это устаревшее предупреждение? Есть ли другой способ получения номера IMEI, когда я не получу это устаревшее предупреждение?

1 Ответ

0 голосов
/ 10 мая 2018

Определение из DeviceId:

Returns the unique device ID, for example, the IMEI for GSM and the MEID or ESN for CDMA phones. Return null if device ID is not available.

Когда IMEI просто:

IMEI (International Mobile Equipment Identity)

Из Официальная документация Android Похоже, что DeviceId устарело с уровня API 26 и что вместо него следует использовать GetMeid (int slotIndex) .В этом случае я бы проверил уровень API и, если он ниже 26, я бы все равно использовал DeviceId в противном случае GetMeid(int slotIndex).Как то так:

string GetIMEI()
{
    Android.Telephony.TelephonyManager mTelephonyMgr = (Android.Telephony.TelephonyManager)Forms.Context.GetSystemService(Android.Content.Context.TelephonyService);
    if (Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.O)
        // TODO: Some phones has more than 1 SIM card or may not have a SIM card inserted at all
        return mTelephonyMgr.GetMeid(0);
    else
        #pragma warning disable CS0618 // Type or member is obsolete
        return mTelephonyMgr.DeviceId;
        #pragma warning restore CS0618 // Type or member is obsolete
}
...