是否可以将Android APP锁定为仅与特定设备配合使用(如具有特定ID/imei /令牌的手机中),并防止任何人使用该应用并在任何设备上使用该应用其他设备?将Android APP锁定到特定设备
是否有可能在代码中对设备标记进行硬编码(或将其加密存储),并检查它是否与当前运行的设备标记匹配并关闭(或显示错误),如果它们不相同? Android设备令牌甚至可以用于此?它是否与硬件链接(即使在刷新ROM之后,独特的设备始终具有相同的标记)?
谢谢!
是否可以将Android APP锁定为仅与特定设备配合使用(如具有特定ID/imei /令牌的手机中),并防止任何人使用该应用并在任何设备上使用该应用其他设备?将Android APP锁定到特定设备
是否有可能在代码中对设备标记进行硬编码(或将其加密存储),并检查它是否与当前运行的设备标记匹配并关闭(或显示错误),如果它们不相同? Android设备令牌甚至可以用于此?它是否与硬件链接(即使在刷新ROM之后,独特的设备始终具有相同的标记)?
谢谢!
是的,这将工作。
你需要调用android.telephony.TelephonyManager.getDeviceId();
这将返回的任何字符串唯一标识设备(IMEI上GSM,MEID为CDMA)。
你需要以下权限在AndroidManifest.xml中:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
才能做到这一点。
然后,您可以检查IMEI在MainActivity的onCreate()
目标设备相匹配,并且如果没有,请致电finish();
可以使用Facebook的“隐藏”库加密目标的IMEI,例如。
是的,我们能做到这一点,但我们必须处理这件事情如下过程: 1)我们可以通过这个代码得到的Android ID或设备的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();
}
检查该IMEI值时启动应用程序,如果它匹配,那么就exitfrom 应用代码:
protected void exitFromApp() {
finish();
Intent localIntent = new Intent("android.intent.action.MAIN");
localIntent.addCategory("android.intent.category.HOME");
localIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(localIntent);
}
public static boolean isSimSupport(Context context)
{
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
return !(tm.getSimState() == TelephonyManager.SIM_STATE_ABSENT);
}
为视图普通用户角度看来它不工作在该设备上。 这是一个窍门,但没有代码来阻止应用程序的运行或安装。
在清单中添加READ_PHONE_STATE权限并处理运行时权限... –
任何方式的用户可以绕过它以任何方式吗?设备是否可以更改?我想即使它可能他们将不得不知道确切deviceId,将使应用程序工作... – laurentius
用户将需要相当复杂。在“根源”电话上,用户可以更改IMEI。该应用程序可以被反向设计以提取允许应用程序运行的deviceId。但正如我所说的,用户必须知道如何对APK进行反向工程,因此检查肯定会阻止“普通”用户非法使用该应用。 –