Je reçois la IMEI
et l'ID de périphérique, alors voici que je reçois un problème getDeviceId()
est obsolète.
TelephonyManager tm = (TelephonyManager)
getSystemService(this.TELEPHONY_SERVICE);
imei = tm.getDeviceId();
device = Settings.Secure.getString(this.getContentResolver(),
Settings.Secure.Android_ID);
getDeviceId()
Renvoie l'identifiant de périphérique unique d'un abonnement, par exemple, l'IMEI pour GSM et le MEID pour les téléphones CDMA. Renvoie la valeur null si l'ID de périphérique n'est pas disponible.
Cette méthode était deprecated dans le niveau 26 de l'API.
Utilisez
(@link getImei}
qui renvoieIMEI
pourGSM
ou
(@link getMeid}
qui renvoieMEID
pourCDMA
.
pour plus d'informations, lisez TelephonyManager
Essayez ceci pour obtenir IMEI
@RequiresApi(api = Build.VERSION_CODES.O)
TelephonyManager tm = (TelephonyManager)
getSystemService(this.TELEPHONY_SERVICE);
String imei = tm.getImei();
OU
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String imei = telephonyMgr.getImei();
} else {
String imei = telephonyMgr.getDeviceId();
}
Essayez ceci pour obtenir
MEID
@RequiresApi(api = Build.VERSION_CODES.O)
TelephonyManager tm = (TelephonyManager)
getSystemService(this.TELEPHONY_SERVICE);
String meid=tm.getMeid();
OU
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String meid=tm.getMeid();
}
Ceci est ma solution:
@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;
}
Code Kotlin pour obtenir DeviceId (IMEI) avec traitement avec autorisation et contrôle de compatibilité pour toutes les versions Android:
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
}
Ajoutez également cette permission à AndroidManifest.xml:
<uses-permission Android:name="Android.permission.READ_PHONE_STATE"/> <!-- IMEI-->
copier et coller mon programme et comprendre. nous ne sommes confrontés ici qu’à un problème d’autorisation (Durée et contrôle du type d’autorisation);
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);
}
}
});
}
}
}
Ça ne devrait pas être quelque chose comme ça?
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();
}