هل سيتم إرجاع Tephonymanger.getDeviceId () معرف الجهاز للأجهزة اللوحية مثل Tab Galaxy ...؟

StackOverflow https://stackoverflow.com/questions/3802644

  •  25-09-2019
  •  | 
  •  

سؤال

أريد الحصول على معرف الجهاز الذي سيكون فريدًا لكل جهاز Android. أنا أتطور حاليًا لجهاز الكمبيوتر اللوحي. تريد الحصول على معرف الجهاز الفريد وتخزين القيم المقابلة ...

لذلك ، أريد أن أعرف ما إذا كانت أجهزة الكمبيوتر اللوحي ستعود قيمة إذا استخدمت TelephonyManager.getDeviceId () ... ؟؟؟ أم أن هناك أي قيمة أخرى فريدة لكل جهاز ؟؟؟

هل كانت مفيدة؟

المحلول

هذا هو ليس سؤال مكرر. كما اتضح ، تتطلب CTS من Google أن GetPhoneType of TelephonyManager يجب أن يكون لا شيء ويحتاج getDeviceid of TelephonyManager إلى أن يكون لاغية للأجهزة غير الهاتفية.

حتى تحصل على imei ، يرجى محاولة استخدام:

String imei = SystemProperties.get("ro.gsm.imei")

لسوء الحظ ، تعد SystemProperties فئة غير عامة في نظام التشغيل Android ، مما يعني أنه ليس متاحًا للجمهور للتطبيقات العادية. حاول النظر في هذا المنشور للمساعدة في الوصول إليه: أين Android.OS.SystemProperties

نصائح أخرى

tephonymanger.getDeviceId () إرجاع معرف الجهاز الفريد ، على سبيل المثال ، IMEI لـ GSM و MEID أو ESN لهواتف CDMA.

final TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);            
String myAndroidDeviceId = mTelephony.getDeviceId(); 

لكني أوصي باستخدام:

الإعدادات. secure.android_id هذا يعيد معرف Android كسلسلة سداسية فريدة من نوعها 64 بت.

    String   myAndroidDeviceId = Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID); 

أحيانا tephonymanger.getDeviceId () سيعود NULL ، لذلك لضمان معرف فريد من نوعه ، ستستخدم هذه الطريقة:

public String getUniqueID(){    
    String myAndroidDeviceId = "";
    TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    if (mTelephony.getDeviceId() != null){
        myAndroidDeviceId = mTelephony.getDeviceId(); 
    }else{
         myAndroidDeviceId = Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID); 
    }
    return myAndroidDeviceId;
}

منذ أن تم تغيير Android 8. يجب أن تستخدم Build.getSerial(), ، للحصول على الرقم التسلسلي للجهاز وإضافة الإذن READ_PHONE_STATE.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    serial = Build.getSerial(); // Requires permission READ_PHONE_STATE
} else {
    serial = Build.SERIAL; // Will return 'unknown' for device >= Build.VERSION_CODES.O
}

واحصل على IMEI أو MEID بهذه الطريقة:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    String imei = tm.getImei(); // Requires permission READ_PHONE_STATE
    serial = imei == null ? tm.getMeid() : imei; // Requires permission READ_PHONE_STATE
} else {
    serial = tm.getDeviceId(); // Requires permission READ_PHONE_STATE
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top