【发布时间】:2015-02-03 15:39:31
【问题描述】:
我正在开发一个 android 项目来控制用户访问。我使用IMEI号码就像用户登录一样,因为我需要用户只能使用一台设备访问,但我担心IMEI克隆。我想实现启动电话控制以确保 IMEI 是原始的。
是否可以更改 IMEI 的无根安卓手机?
【问题讨论】:
-
这个问题似乎跑题了,因为它与编程无关。
我正在开发一个 android 项目来控制用户访问。我使用IMEI号码就像用户登录一样,因为我需要用户只能使用一台设备访问,但我担心IMEI克隆。我想实现启动电话控制以确保 IMEI 是原始的。
是否可以更改 IMEI 的无根安卓手机?
【问题讨论】:
是的,这是可能的。大多数基于 MediaTek 的 Android 手机(不包括来自诺基亚/HMD 的手机)都可以使用 *#*#3646633#*#* (*#*#engmode#*#*) 或类似密码访问工程菜单,并且此菜单可在系统/电话上下文中运行,并具有特殊的 RIL 访问权限允许在不生根的情况下输入 AT 命令。而联发科芯片组因其AT+EGMR 命令而闻名(或者我应该说是臭名昭著),除此之外,该命令还允许修改 IMEI。
所有这一切都可以在智能手机本身没有 root 的情况下完成,尽管某些 OEM 型号实际上确实需要明确要求 root 权限,即使是工程菜单也是如此。
【讨论】:
您还可以使用 Android 设备唯一 ID:
import android.provider.Settings.Secure;
private String android_id = Secure.getString(getContext().getContentResolver(),
Secure.ANDROID_ID);
在这个博客中有一个很好的解释
http://android-developers.blogspot.in/2011/03/identifying-app-installations.html
【讨论】:
我认为您可以使用设备的 MAC 地址作为唯一标识符。使用以下代码获取 MAC 地址:
WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = manager.getConnectionInfo();
String uniqueId = info.getMacAddress();
不要忘记将此权限添加到清单中:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
【讨论】: