2016-11-16 81 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(); 

希望能解决这个问题。 注意: - 我还没有尝试过。