是否可以将Android APP锁定为仅与特定设备一起使用(如在具有特定ID / imei /令牌的手机中)并阻止任何人使用该应用并在任何其他设备中使用它?
是否可以在代码中对设备令牌进行硬编码(或将其加密存储)并检查它是否与当前正在运行的设备令牌匹配并关闭(或显示错误),如果它们不是相同?甚至可以使用Android设备令牌吗?它是否与硬件相关联(即使在刷新ROM之后,唯一的设备也始终具有相同的令牌)?
谢谢!
答案 0 :(得分:1)
是的,这会奏效。
您需要致电android.telephony.TelephonyManager.getDeviceId();
这将返回唯一标识设备的字符串(GSM上的IMEI,CDMA的MEID)。
您需要在AndroidManifest.xml中获得以下权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
为了做到这一点。
然后,您可以检查IMEI是否与MainActivity onCreate()
中的目标设备匹配,如果不匹配,请致电finish();
例如,您可以使用Facebook的“隐藏”库加密目标的IMEI。
答案 1 :(得分:1)
是的,我们可以做到,但我们必须处理这个问题,如下面的过程: 1)我们可以通过以下代码获取设备的android id或imei:
def newList(n1,n2,n3,List):
avg = (n1+n2+n3)/3
i=0
while i<len(List):
List[i] -= avg
i += 1
print D
启动应用程序时检查此imei值是否匹配然后退出 应用代码:
String imei;
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
try {
if(isSimSupport(mContext))
{
imei = telephonyManager.getDeviceId();
}
if(imei.equalsIgnoreCase(""))
{
imei= Settings.Secure.getString(getApplicationContext().getContentResolver(), Settings.Secure.ANDROID_ID);
}
if (isNetworkAvailable()) {
String userId=preference.getUserId("UserId");
String devicetoken=preference.getToken("token");
sendRegistrationToServer(imei,userId,devicetoken);
} else {
toastMsg(getResources().getString(R.string.internet_alert));
}
} catch (Exception e) {
e.printStackTrace();
}
对于普通用户而言,它似乎无法在该设备上运行。 这是一个技巧,但没有代码阻止应用程序运行或安装。