游戏无法获取设备唯一id怎么办,手机无法获取正确设备Id
作者:本站作者
本文目录一览
1,手机无法获取正确设备Id
解决办法,第一步手机关机,第二步拔出SIM卡,第三步重新插回去,第四步再开机就好了
2,手机无法获取正确设备Id
解决办法,第一步手机关机,第二步拔出SIM卡,第三步重新插回去,第四步再开机就好了
3,无法从正确的设备获取正确的ID
假如原先是电信的卡,可以换成移动的卡,设置一下移动网络。2关机,换回来电信卡,网络服务正常。3我的出错原因是,我由电信的3g卡换成4G卡,然后网络设置里面设置成了4G网络 ,然后就算你怎么重启,网络设置好像默认为认不了电信的4G卡。所以一直出错。所以换成移动的卡,引导一下设置。就可以了。
4,无法从正确的设备获取正确的ID
假如原先是电信的卡,可以换成移动的卡,设置一下移动网络。2关机,换回来电信卡,网络服务正常。3我的出错原因是,我由电信的3g卡换成4G卡,然后网络设置里面设置成了4G网络 ,然后就算你怎么重启,网络设置好像默认为认不了电信的4G卡。所以一直出错。所以换成移动的卡,引导一下设置。就可以了。
5,如何检索Android设备的唯一ID
打开拨号界面输入*#06# 手机会自动反馈给你这台设备的唯一ID?IMEI(国际移动设备识别码)唯一编号,用于识别 GSM,WCDMA手机以及一些卫星电话(移动设备识别码)全球唯一编号,用于识别CDMA移动电台设备的物理硬件,MEID出现的目的是取代ESN号段(电子序列号)(电子序列号)唯一编号,用于识别CDMA手机(国际移动用户识别码)与所有GSM和UMTS网络手机用户相关联的唯一识别编号如需要检索设备的ID不过显然的,有些用户比其他人更加偏执一些,可以将这些标识中的一个或者多个进行hash运算就很有用,生成的字符串仍然可以唯一标识该设备,但是不会明确的标识实际的设备。例如,使用string.hashcode(),再加上一个uuid,这里有详细的代码》》
6,放置江湖未成功获取到设备id
没有授权游戏读取手机的权限。在游戏《放置江湖》中,是需要玩家使用游戏的账号来登录,由于游戏设置了自动登录,所以玩家只需要点击游戏即可进入游戏,若出现了未成功获取到设备id,则是因为玩家没有授权游戏读取手机的权限,只需要点击手机的总系统,找到《放置江湖》游戏并且授权读取手机id的权限,即可解决这个问题。
7,Android获取设备唯一ID的几种方式
1. The IMEI: 仅仅只对Android手机有效: TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); String szImei = TelephonyMgr.getDeviceId(); // Requires READ_PHONE_STATE 采用此种方法,需要在AndroidManifest.xml中加入一个许可:android.permission.READ_PHONE_STATE,并且用户应当允许安装此应用。作为手机来讲,IMEI是唯一的,它应该类似于 359881030314356(除非你有一个没有量产的手机(水货)它可能有无效的IMEI,如:0000000000000)。 2. Pseudo-Unique ID, 这个在任何Android手机中都有效 有一些特殊的情况,一些如平板电脑的设置没有通话功能,或者你不愿加入READ_PHONE_STATE许可。而你仍然想获得唯一序列号之类的东西。这时你可以通过取出ROM版本、制造商、CPU型号、以及其他硬件信息来实现这一点。这样计算出来的ID不是唯一的(因为如果两个手机应用了同样的硬件以及Rom 镜像)。但应当明白的是,出现类似情况的可能性基本可以忽略。要实现这一点,你可以使用Build类: String m_szDevIDShort = "35" + //we make this look like a valid IMEI Build.BOARD.length()%10+ Build.BRAND.length()%10 + Build.CPU_ABI.length()%10 + Build.DEVICE.length()%10 + Build.DISPLAY.length()%10 + Build.HOST.length()%10 + Build.ID.length()%10 + Build.MANUFACTURER.length()%10 + Build.MODEL.length()%10 + Build.PRODUCT.length()%10 + Build.TAGS.length()%10 + Build.TYPE.length()%10 + Build.USER.length()%10 ; //13 digits 大多数的Build成员都是字符串形式的,我们只取他们的长度信息。我们取到13个数字,并在前面加上“35”。这样这个ID看起来就和15位IMEI一样了。我自己以前用的一个工具类,用到了uuid,给你一用吧import java.io.file;import java.io.fileoutputstream;import java.io.ioexception;import java.io.randomaccessfile;import java.util.uuid;import android.content.context;public class installation private static string sid = null;private static final string installation = "installation";public synchronized static string id(context context) if (sid == null) file installation = new file(context.getfilesdir(), installation);try if (!installation.exists())writeinstallationfile(installation);sid = readinstallationfile(installation);} catch (exception e) throw new runtimeexception(e);}}return sid;}private static string readinstallationfile(file installation)throws ioexception randomaccessfile f = new randomaccessfile(installation, "r");byte[] bytes = new byte[(int) f.length()];f.readfully(bytes);f.close();return new string(bytes);}private static void writeinstallationfile(file installation)throws ioexception fileoutputstream out = new fileoutputstream(installation);string id = uuid.randomuuid().tostring();out.write(id.getbytes());out.close();}}// 调用方法// 获取标识string serialnumber = "";serialnumber = installation.id(mcontext); // 静态方法,直接调用
8,无法获取设备ID该怎么办
为了防止iPhone被盗信息泄露,最好是开启。 1.进入AppleID管理员后,按下「管理你的AppleID」,没有帐号就建立一个吧! 2.登入你的AppleID帐号 3.先按一下左手边的「密码与帐号安全」,然后右手边填入你申请AppleID时所输入的答案。如果已忘了的话就要求将答案传送至你的Email地址吧。 4.通过第一关的安全提示问题后,就会见到双步骤验证的设定,按下「开始设定」 5.了解一下使用方法,就是使用帐号和密码登入后,还需要通过你注册的设备接收验证码,这样才能正式登入AppleID帐号。没问题的话,就继续: 6.接下来的还是一些需要你清楚和记注的事项,大家可以先看一看 7.最后,你还必须等待3天才可以开启这个验证机制。原因是,Apple担心你的帐号已经被盗,做这次设定的并非阁下你本人,所以需要3天后确定没有其他人偷用你的帐号后,就可以开始完成设定。Apple会发送电邮给你作确定,大家3天后再跟指示做即可。 三天后当你收到Apple寄来的通知电邮,就可以继续完成设定。 重新回到管理AppleID的页面,然后继续前一页步骤1-6。这时你就可以继续后半部的四个步骤,第一部是新增电话号码,以收取4个数字的SMS验证码。 验证了手机号码后,你还可以新增已经开启了「寻找我的iPhone」的iPhone或iPad作为验证设备,同样获取4位数字验证。 接着是一条复原密钥,作用是以防日后你的手机已验证的设备遗失了,也可以通过这条复原密钥来登入帐号,所以大家一定要小心保管好。 再下一步是确认你的复原密钥,以确保你已经记下了: 最后一步就是确认你清楚这个双步验证是做什么的,因为日后连Apple也无法代你重置密码,自己必定要管理好。 这样就能够好好地保护AppleID以免费盗了。
9,如何获取Android设备唯一识别码
可以参考如下内容,获取唯一识别码:
Device ID
唯一的设备ID,如GSM网络的IMEI,CDMA网络的MEID / ESN,可能返回null(API文档的描述)
只对手机设备有效,对于不在手机网络的设备,会返回null
获取到的Device ID值,即使设备恢复出厂设置也不会改变
需要READ_PHONE_STATE权限
某些设备的Device ID实现有bug,会返回0或*
TelephonyManager
tm
=
(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String
deviceId
=
tm.getDeviceId();Android的开发者在一些特定情况下都需要知道手机中的唯一设备ID。例如,跟踪应用程序的安装,生成用于复制保护的DRM时需要使用设备的唯一ID。
范围
本文提供有关如何读取各种Android设备的 ID的介绍,用以使用标识号。本文假定用户已经安装了Android以及开发应用程序必要的工具。并且,本文假定用户已了解Android的基本知识。
简介在搭载Android操作系统的设备中,已经存在好几种类型的设备标识号。先前的所有Android设备都具有电话功能,因此查找每部设备硬件唯一的IMEI,MEID,或ESN也很容易。但仅能使用Wifi的设备或音乐播放器没有电话硬件,所以没有这种类型的唯一标识号。本文阐述了如何读取不同Android设备的标识号。检索Android设备ID各种方式
以下是Android设备不同类型的识别设备ID。
· 唯一编号(IMEI,MEID,ESN,IMSI)
· MAC地址
· 序列号
· ANDROID_ID
唯一编号(IMEI,MEID,ESN,IMSI)
说明在以前,当Android设备均作为电话使用时,寻找唯一标识号比较简单:()可用于找到(取决于网络技术)手机硬件唯一的IMEI,MEID,ESN和IMSI编号。
TelephonyManager.getDeviceId
IMEI,MEID,ESN,IMSI的定义如下:
?IMEI(国际移动设备识别码)唯一编号,用于识别 GSM,WCDMA手机以及一些卫星电话(移动设备识别码)全球唯一编号,用于识别CDMA移动电台设备的物理硬件,MEID出现的目的是取代ESN号段(电子序列号)(电子序列号)唯一编号,用于识别CDMA手机(国际移动用户识别码)与所有GSM和UMTS网络手机用户相关联的唯一识别编号如需要检索设备的ID,在项目中要使用以下代码:
?MEID
?ESN
?IMSI
import android.telephony.TelephonyManager;
import android.content.Context;
String imeistring = null;
String imsistring = null;
{
TelephonyManager telephonyManager;
telephonyManager =
( TelephonyManager )getSystemService( Context.TELEPHONY_SERVICE );
/*
* getDeviceId() function Returns the unique device ID.
* for example,the IMEI for GSM and the MEID or ESN for CDMA phones.
*/
imeistring = telephonyManager.getDeviceId();
/*
* getSubscriberId() function Returns the unique subscriber ID,
* for example, the IMSI for a GSM phone.
*/
imsistring = telephonyManager.getSubscriberId();
}
如要只读取手机的状态,则需添加READ_PHONE_STATE许可到AndroidManifest.xml文件中。
<uses-permission
android:name="android.permission.READ_PHONE_STATE" >
</uses-permission>
缺点
?Android设备要具有电话功能
?其工作不是很可靠
?序列号
?当其工作时,该值保留了设备的重置信息(“恢复出厂设置”),从而可以消除当客户删除自己设备上的信息,并把设备转另一个人时发生的错误。
Mac地址
说明
可通过检索找到设备的Wi - Fi或蓝牙硬件的Mac地址。但是,不推荐使用Mac地址作为唯一的标识号。
缺点设备要具备Wi – Fi功能(并非所有的设备都有Wi – Fi功能)如果设备目前正在使用Wi - Fi,则不能报告Mac地址
序列号
从Android 2.3(“姜饼”)开始,通过android.os.Build.SERIAL方法序列号可被使用。没有电话功能的设备也都需要上给出唯一的设备ID; 某些手机也可以需要这样做。序列号可以用于识别MID(移动互联网设备)或PMP(便携式媒体播放器),这两种设备都没有电话功能。通过读取系统属性值“ro.serialno”的方法,可以使用序列号作为设备ID 。如检索序列号并作为设备ID使用,请参考下面的代码示例。
import java.lang.reflect.Method;
String serialnum = null;
try {
Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class, String.class );
serialnum = (String)( get.invoke(c, "ro.serialno", "unknown" ) );
}
catch (Exception ignored)
{
}
缺点
序列号无法在所有Android设备上使用。
ANDROID_ID
说明
更具体地说,Settings.Secure.ANDROID_ID 是一串64位的编码(十六进制的字符串),是随机生成的设备的第一个引导,其记录着一个固定值,通过它可以知道设备的寿命(在设备恢复出厂设置后,该值可能会改变)。 ANDROID_ID也可视为作为唯一设备标识号的一个好选择。如要检索用于设备ID 的ANDROID_ID,请参阅下面的示例代码
String androidId = Settings.Secure.getString(getContentResolver(),Settings.Secure.ANDROID_ID);
缺点
? 对于Android 2.2(“Froyo”)之前的设备不是100%的可靠
? 此外,在主流制造商的畅销手机中至少存在一个众所周知的错误,每一个实例都具有相同的ANDROID_ID。
结论
对于绝大多数应用来说,只需识别特定的安装配置,而不需要识别物理设备。所幸是,这样做就省去了麻烦。
下面是部分使用设备ID的最佳途径:
?支持各种设备类型的另一种方法是使用getDeviceID()API和ro.serialno的组合
?有许多值得参考的原因,来提醒开发者避免试图识别特定的设备。对于那些想做一下这方面尝试的用户, 最好的办法可能是使用ANDROID_ID,并在一些传统设备上做尝试。1. 首先,添加权限:
//读取手机状态权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
2. 获取手机管理器对象
TelephonyManager telephonyManager = (TelephonyManager)this.getSystemService( Context.TELEPHONY_SERVICE);
//获取本机MIEI号码
String deviceId = telephonyManager.getDeviceId();
3.deviceId就是设备唯一识别码
10,android获取设备唯一ID优化方案
最近,因公司产品及客户需要,领导让我研究免存储设备ID,以及给出一个设备ID最佳的方案(可与存储相结合)。在研究过浏览器的fingerprient2js后,颇有心得,并且看网上似乎木有完美的解决方案,于是写了这篇文章,仅供需要的开发者参考。(该算法暂未进行验证,这里先给出一个jar包,后期我会在SDK中加入调查接口,分两个jar包(测试版和正式版),希望开发者能支持测试版,稳定后使用正式版。) 在产品中,首先肯定要尽量避免权限,其次考虑卸载APP后ID不一致的问题,再就是尽量结合存储,降低卸载或重装app时,设备ID改变的概率。最后,设计出合理方案,对造成不利的因素进行列举。 A.android_id: 什么是android_id呢?当设备在第一次启动时,系统会随机产生一个64位的数字,然后以16进制的形式保存在设备上,且API提供了获取这一参数的方法: 这就是android_id,当设备重新初始化或者刷机的时候,会被重置。 除此以外,android_id还有其他的bug,比如: 1.不同的设备可能会产生相同的android_id。 2.有的厂商设备无法获取android_id,会返回null。 3.对于CDMA的设备,ANDROID_ID和TelephonyManager.getDeviceId() 的值相同。 4.不同的android系统版本稳定性不同。 B.硬件序列号(SERIAL) API给的解释是: A hardware serial number, if available.(一个硬件的序列码,如果有效的话) so,虽然我没有用几百台手机测试,也能知道这个值有时候是无效的,说的这么隐晦。 C.指纹 fingerprint:设备的唯一标识。由设备的多个信息拼接合成。 也是在JavaScript才接触到这个单词”fingerprint“,这个词也很生动,意思是能大概的标识一个设备,像指纹一样,但不排除重复的可能性。 理论上讲用这个属性是可以标识一个设备的,但是其实并不是,两台一摸一样的新手机,这个值相同的可能性是很多的。为了更加进一步的精确,后面还会介绍几个属性,并把几个属性结合在一起,生成一个接近100%的UUID。 D.android系统提供了获取android系统版本号,生产厂商,固件版本推出时间的API. E.android系统提供了当前android设备是12或24小时制显示时间的API, F.android系统提供了当前android设备的修订版本列表,显示屏,主板等等参数。 G.可以允许用户根据需求用自定义字符串去为FP做贡献,比如IP地址等 方案: 在不需要用户权限的前提下,网上最完美的方案是将android_id和硬件序列号,如果其中任意一种失效就使用另外一种。受FingerPrint2js的启发,我看了Android获取系统硬件相关的API,将所有不经常变化且能代表一定用户群体的属性都取出来进行MD5运算,包含但不限于依据中所述的信息。准确性还需进一步验证,但理论上要比FingerPrint2js准确性高,也在网上给出的比较好的方案基础上进一步缩小了FP可能重复的概率。 1.第一次进入APP时,获取系统相关配置信息生成FP,存入SP。 2.每次访问,先从SP取,没有再通过相关配置信息生成FP,存入SP。 3.封装成jar,只给用户暴露出获取ID的接口、传递自定义信息构建FP的接口以及第一次安装时间戳的接口(或设置标签调用的接口) 单纯对于FP而言,有两个主要问题需要解决,一是FP重复的问题,相同配置的新设备重复可能性极大,增多给FP贡献的因素的数量,可以有效降低重复率。二是FP改变的问题,贡献FP的生成因素的其中一个如果改变,FP就会改变。所以如果FP的贡献因素数量过多,导致FP改变的概率也就变大,所以说客户要在两者之间做一个很好的平衡。 对比: 为android FP做贡献的各配置参数:(示例以6.0的华为荣耀8为例) 1.Android_ID:Settings.System.getString(context.getContentResolver(), Settings.System.ANDROID_ID) //低版本稳定,高版本不稳定 示例:295a4fbf716094ee 2.Build.SERIAL 设备序列号(有的设备无法获取) 示例:WTK7N16923005607 3.Build.FINGERPRINT 设备指纹(同样的新设备该值应该是一样的) 示例:honor/FRD-AL00/HWFRD:6.0/HUAWEIFRD-AL00/C00B171:user/release-keys 4.Build.TIME 固件推出日期 示例:1477442228000 5.Build.VERSION.INCREMENTAL 源码控制版本号 示例: C00B171 6.Build.getRadioVersion() 获取无线电固件版本 示例:21.210.03.00.031,21.210.03.00.031 7.Build.HARDWARE 硬件名称 示例:hi3650 8.Build.VERSION.SECURITY_PATCH 用户可见安全补丁level(这里我得到的是日期,可能是补丁修复的时间)示例:2016-10-01 9.当前设备是12/24时制:Settings.System.getString(context.getContentResolver(), Settings.System.TIME_12_24) 示例:null(有的手机可以获取) 10.Build.VERSION.SDK_INT SDK版本号 (一般讲是与系统版本号一一对应的) 示例:23 11.Build.SUPPORTED_32_BIT_ABIS 支持32位ABIs的列表(数值)示例:[armeabi-v7a,armeabi] 12.Build.SUPPORTED_64_BIT_ABIS 支持64位ABIs的列表(数值)示例:[arm64-v8a] 13.Build.BOOTLOADER 系统启动程序版本号 示例:unknown 14.Build.VERSION.RELEASE 用户可见版本 示例: 6.0 16.Build.BOARD 主板 示例:FRD-AL00 17.Build.BRAND 系统定制商 示例:honor 21.Build.HOST 示例:huawei-RH2288H-V2-12L 23.Build.MANUFACTURER 产品/硬件的制造商 示例:HUAWEI 25.Build.PRODUCT 产品的名称 示例:FRD-AL00 26.Build.TAGS 描述Build的标签(Comma-separated tags describing the build, like "unsigned,debug".) 示例:release-keys 28.Build.USER 描述Build的USER 示例:jslave 31.Build.VERSION.BASE_OS 基带版本 The base OS build the product is based on. 示例:空值 32.自定义字符串或自定义数组
文章TAG:
游戏无法获取设备唯一id怎么办 手机无法获取正确设备Id 游戏 无法 获取