是否可以將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進行反向工程,因此檢查肯定會阻止「普通」用戶非法使用該應用。 –