2016-11-16 84 views
-1

我有一個三星j5。我使用的序列號可以在Android的每個設備的唯一ID像序列號

設置>關於設備>狀態>序列號。

它的值爲RF8H933KWLF,我認爲它是唯一的。現在我將這個值註冊到我的數據庫中,當我運行我的應用程序時,我發送一個請求到我的數據庫,並檢查我使用的設備是否在我的數據庫中註冊。我得到的設備序列號的方式是:

String serialNumber = ""; 
try { 
    Class <? > c = Class.forName("android.os.SystemProperties"); 
    Method get = c.getMethod("get", String.class, String.class); 
    serialNumber = (String) get.invoke(c, "sys.serialnumber", "Error"); 
    if (serialNumber.equals("Error")) { 
    serialNumber = (String) get.invoke(c, "ril.serialnumber", "Error"); 
    } 

} catch (NoSuchMethodException e) { 
    e.printStackTrace(); 
} catch (IllegalAccessException e) { 
    e.printStackTrace(); 
} catch (InvocationTargetException e) { 
    e.printStackTrace(); 
} catch (ClassNotFoundException e) { 
    e.printStackTrace(); 
} 

對於我的設備,我可以得到正確的值。

我的問題是爲什麼當我使用不同的設備時,我無法獲得我在Serial Number中看到的值。

  1. 我嘗試在設備上,並返回Error
  2. 什麼是我可以使用的替代ID,這對設備是唯一的(即使設備恢復或生根也不會改變)。
  3. 我需要的ID是可見的,所以我可以將它註冊到我的數據庫以允許訪問應用程序的登錄。

回答

0

指這你可以找到許多其他方式Is there a unique Android device ID?

import android.provider.Settings.Secure; 

private String android_id = Secure.getString(getContext().getContentResolver(), 
                Secure.ANDROID_ID); 
+0

我試過這個ID,但作爲文檔說,它將改變設備恢復或植根時。我不想要那個。我也沒有辦法得到這個ID,以便我可以註冊它不像序列號,我可以去'設置>關於設備>狀態>序列號.'然後將該值存儲到數據庫 – Giant

+0

提到這個問題,有很多其他方式你可以得到設備ID,檢查所有答案一次,至少有一個應該工作 – Redman

+0

我只有一個問題,我可以在哪裏看到設備的價值?我需要先看到它,所以我可以註冊到我的數據庫。 – Giant

0

可以使用的有電話號碼IMEI組合得到唯一的ID。 您可以向用戶詢問電話號碼,同時設備也可以顯示IMEI號碼。 要以編程方式獲取IMEI號碼和電話號碼,請執行此類操作。

TelephonyManager teleMan = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
// get IMEI number 
String imei = teleMan.getDeviceId(); 
//get The Phone Number 
String phone = teleMan.getLine1Number(); 

希望能解決這個問題。 注意: - 我還沒有嘗試過。