hpi*_*que 27 testing android emulation identifier
我想在模拟器中测试一个依赖于设备标识符(ANDROID_ID)的应用程序.
我目前使用以下代码获取设备标识符:
final String deviceID = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
Run Code Online (Sandbox Code Playgroud)
当我在模拟器中运行它时null,它返回,这给了我各种问题.似乎更高的Android版本它返回了一些东西.
有没有办法在Android模拟器中获取设备标识符?我是否错误地获取了设备ID?
也许可以通过控制台设置模拟器的设备标识符?
小智 39
在模拟器中,IMEI和IMSI的值是硬编码的:
2325 { "+CIMI", OPERATOR_HOME_MCCMNC "000000000", NULL }, /* request internation subscriber identification number */
2326 { "+CGSN", "000000000000000", NULL }, /* request model version */
Run Code Online (Sandbox Code Playgroud)
因此,你永远都会得到null.
如果您仍然希望将这些ID号用于测试,并且希望为仿真器和真实设备保留相同的代码,则必须以某种方式在模拟器中更改它.
至少有两种方法可以做到:
更改代码中的值并重新编译模拟器的代码.但是,这可能太复杂而且耗时...... :-)
"破解"模拟器二进制文件(因为它既没有压缩也没有加密 - 你可以做到!)并在那里修改字符串(在正确的位置).
这是怎么做的:
备份模拟器二进制文件(稍后回滚!).在Windows中,二进制文件可以在名为"emulator.exe"的位置找到,位于android"\ tools"文件夹中.
用您喜欢的十六进制编辑器打开二进制文
搜索+ CGSN字符串后跟一个空字节(后面跟着IMEI号码的15位数 - 请参阅下面的打印屏幕)

编辑号码(注意不要更改数字的原始号码)
并保存文件!
并且可能更改/调整您的代码以使用IMEI作为您的id(作为Falmari指出),或者使用此技巧来更改其他一些值.
| 归档时间: |
|
| 查看次数: |
29409 次 |
| 最近记录: |