Android设备是否具有唯一ID,如果是这样,使用Java访问它的简单方法是什么?
我在GCM中使用GoogleCloudMessaging.getInstance(context)注册; 并将收到的令牌保存在设备上.然后将其发送到服务器,它与用户帐户相关联.如果我卸载我的应用程序而没有注销并再次安装并与其他用户一起登录,我会收到新令牌并将其发送到服务器.当推送发送给第一个用户时,我在第二个用户登录时看到它们.
为什么GCM会向我发送不同的令牌,我该如何处理?
在应用程序中,我希望获得唯一的手机ID TelephonyManager.getDeviceId().要使用它,我需要此权限READ_PHONE_STATE.问题在于Android 6的运行时权限.在运行时权限弹出对话框中,它要求授予"制作和管理电话"权限,这可能会吓到用户使用应用程序.可以做些什么?或者,如果不使用如此大的权限,我可以获得设备的任何其他唯一标识符
TelephonyManager TM = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String deviceId = TM.getDeviceId();
Run Code Online (Sandbox Code Playgroud) 我想[I.E unique id of a device]通过使用下面的代码来获取唯一ID
TelephonyManager tManager;
tManager = (TelephonyManager).getSystemService(Context.TELEPHONY_SERVICE);
String deviceId = tManager.getDeviceId();
Run Code Online (Sandbox Code Playgroud)
在哪里deviceId为我提供Android设备的唯一ID.我不是在模拟器上测试它,因为在模拟器中我获得了价值000000000000000
我在实际设备上测试它的任何方式,这适用于大多数设备,但在某些设备,我正在获得价值 null
我测试了这个
Samsung Galaxy S3
Samsung Galaxy Tab3
Samsung Galaxy Star
Google Nexus4
Google Nexus5
Google Nexus7
Run Code Online (Sandbox Code Playgroud)
在上面列出的所有设备中,它给出了正确的输出,除了一个设备,也就是说Google Nexus7,在此获得价值null
所以,最终我的目标是为每个特定的设备获得独特的价值,如果这个代码给我的空值比我可以尝试一些替代的方式
我听说这 Device MAC Address是所有设备的独特之处,但不幸的是它只适用于wifi连接.
那么有没有其他方法可以获得每个特定设备的独特价值?
不管怎么说,还是要谢谢你
我将发布Android和ios的付费应用程序.我希望一个帐户只能在一台设备上安装和运行.否则我想阻止第一台设备上的应用程序.有没有办法做到这一点?
注意:我知道Google Play有一个lvl.但我不确定,它确实如此.对不起我的英语不好.