在我的應用程序中,我用IMEI碼鎖定應用程序。我的意思是在啓動應用程序時檢查設備IMEI並將其與允許的設備列表進行比較。如果設備在列表中的用戶可以繼續工作,否則它撈出:設備對平板電腦的IMEI鎖定
public boolean checkIMEI(Activity activity)
{
TelephonyManager tm=(TelephonyManager)activity.getSystemService(Context.TELEPHONY_SERVICE);
if(tm==null)
{
Log.v(TAG, "Can't get telephony service");
new MessageBox(activity, "Can't get telephony service. Forcing shut down!");
return false;
}
//encrypted IMEIs list
String[] vals=activity.getResources().getStringArray(R.array.imeis);
//real device IMEI
String deviceId=tm.getDeviceId();
if(deviceId==null || deviceId.length() < 2)
{
Log.v(TAG, "Looks like emulator - bail out!");
Toast.makeText(activity, "This special version not intended to run in this device!", 5000).show();
return false;
}
boolean valid=false;
for(String val:vals)
{
String imei=Checker.decryptTemp(val); //decrypt IMEIs
if(imei.equalsIgnoreCase(deviceId))
{
valid=true;
break;
}
}
if(!valid)
{
Log.v(TAG, "Invalid device IMEI!");
return false;
}
return true;
}
問題與沒有配備電話服務Android平板電腦。所以這些設備沒有IMEI。我應該依賴哪個ID? Mac地址還是別的?另外,每次我需要詢問準用戶向我發送他們的設備ID ...他們如何做到這一點?
教我如何反編譯和重新編譯再次簽名的應用程序 – barmaley
您不需要簽名的代碼在模擬器中運行它@barmaley ... – Kheldar
http://stackoverflow.com/questions/3122635/is-它可能反編譯Android的apk文件和http://stackoverflow.com/questions/4336637/is-it-really-impossible-to-protect-android-apps-from-reverse-engineering反編譯。我並不是說它效率不高(需要比感知收益更多的努力),但是你會挫敗合法用戶並且從未完全保護自己。這可能仍然是一個明智的商業決策,但您應該意識到風險。 – Kheldar