wake-up-neo.com

tm.getDeviceId () ist veraltet?

Ich erhalte die IMEI- und Geräte-IDs. Hier bekomme ich ein Problem, getDeviceId() ist veraltet.

TelephonyManager tm = (TelephonyManager) 
                 getSystemService(this.TELEPHONY_SERVICE);

imei = tm.getDeviceId();
device = Settings.Secure.getString(this.getContentResolver(),
           Settings.Secure.Android_ID);
11
ravi

getDeviceId()

Gibt die eindeutige Geräte-ID eines Abonnements zurück, z. B. die IMEI für GSM und die MEID für CDMA-Telefone. Gibt null zurück, wenn die Geräte-ID nicht verfügbar ist.

Diese Methode war in API-Ebene 26 deprecated.

Verwenden Sie (@link getImei}, wodurch IMEI für GSM zurückgegeben wird.

oder (@link getMeid}, der MEID für CDMA zurückgibt. 

weitere Informationen finden Sie unter TelephonyManager.

Versuchen Sie dies, um IMEI zu erhalten

 @RequiresApi(api = Build.VERSION_CODES.O)
 TelephonyManager tm = (TelephonyManager)
            getSystemService(this.TELEPHONY_SERVICE);
    String imei = tm.getImei();

ODER 

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            String imei = telephonyMgr.getImei();
} else {
            String imei = telephonyMgr.getDeviceId();
}

Versuchen Sie dies, um MEID zu bekommen.

@RequiresApi(api = Build.VERSION_CODES.O)
TelephonyManager tm = (TelephonyManager)
            getSystemService(this.TELEPHONY_SERVICE);

    String meid=tm.getMeid();

ODER 

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            String meid=tm.getMeid();
} 
15
Nilesh Rathod

Das ist meine Lösung:

@SuppressWarnings("deprecation")
private String getIMEINumber() {
    String IMEINumber = "";
    if (ActivityCompat.checkSelfPermission(this, Android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
        TelephonyManager telephonyMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            IMEINumber = telephonyMgr.getImei();
        } else {
            IMEINumber = telephonyMgr.getDeviceId();
        }
    }
    return IMEINumber;
}
4
Bingerz

Kotlin-Code zum Abrufen von DeviceId (IMEI) mit Handhabung und Berechtigungs- und Kompatibilitätsprüfung für alle Android-Versionen:

 val  telephonyManager = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
        == PackageManager.PERMISSION_GRANTED) {
        // Permission is  granted
        val imei : String? = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
             telephonyManager.imei
         } else { // older OS  versions
             telephonyManager.getDeviceId()
         }

        imei?.let {
            Log.i("Log", "DeviceId=$imei" )
        }

    } else {  // Permission is not granted

    }

Fügen Sie diese Berechtigung auch zu AndroidManifest.xml hinzu:

<uses-permission Android:name="Android.permission.READ_PHONE_STATE"/> <!-- IMEI-->
2
Hamed Jaliliani

kopiere und füge mein Programm ein und verstehe es. wir stehen hier nur in Permission (Laufzeit und Check Permission Type) vor;

import Android.*;
import Android.Manifest;
import Android.annotation.SuppressLint;
import Android.content.Context;
import Android.content.pm.PackageManager;
import Android.os.Build;
import Android.support.annotation.RequiresApi;
import Android.support.v4.app.ActivityCompat;
import Android.support.v7.app.AppCompatActivity;
import Android.os.Bundle;
import Android.telephony.TelephonyManager;
import Android.view.View;
import Android.widget.Button;
import Android.widget.TextView;

import Java.util.UUID;

public class Login extends AppCompatActivity {

    private Button loginBtn;
    private TextView textView;
    private String IMEINumber;




    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        loginBtn = (Button) findViewById(R.id.loginBtn);
        textView = (TextView) findViewById(R.id.textView);
        final int reqcode = 1;


        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
        {
            String[] per = {Manifest.permission.READ_PHONE_STATE};
            requestPermissions(per, reqcode);
            loginBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
                    if (ActivityCompat.checkSelfPermission(Login.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                            IMEINumber = tm.getImei();
                            textView.setText(IMEINumber);
                        }
                    } else {
                        IMEINumber = tm.getDeviceId();
                        textView.setText(IMEINumber);
                    }
                }
            });


        }
    }

}
1
Pradeep Sheoran

Sollte es nicht so sein?

            if (Build.VERSION.SDK_INT >= 26) {
                if (telMgr.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
                    deviceId = telMgr.getMeid();
                } else if (telMgr.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
                    deviceId = telMgr.getImei();
                } else {
                    deviceId = ""; // default!!!
                }
            } else {
                deviceId = telMgr.getDeviceId();
            }
0
karim