我希望我的應用程序在特定區域(例如美國)工作。將Android應用程序限制在特定區域
我們可以限制遊戲市場的應用程序分佈,但我發現有一些黑客來安裝這些應用程序。
我必須以某種方式限制應用程序內的使用。
爲此,我可以檢索用戶的GPS位置並使用Google的Geocode API進行首次運行。但是如果用戶旅行到其他地區呢?
我將不得不使用位置更改偵聽器來迎合這種情況,但這會消耗電池電量。
如果我去設備的時區,用戶可以更改它。
有什麼其他的事情,我可以做,限制應用程序到特定區域?
我希望我的應用程序在特定區域(例如美國)工作。將Android應用程序限制在特定區域
我們可以限制遊戲市場的應用程序分佈,但我發現有一些黑客來安裝這些應用程序。
我必須以某種方式限制應用程序內的使用。
爲此,我可以檢索用戶的GPS位置並使用Google的Geocode API進行首次運行。但是如果用戶旅行到其他地區呢?
我將不得不使用位置更改偵聽器來迎合這種情況,但這會消耗電池電量。
如果我去設備的時區,用戶可以更改它。
有什麼其他的事情,我可以做,限制應用程序到特定區域?
您還可以檢查用戶註冊與TelephonyManager
網絡你有2種方法,可以是有益的。
GetNetworkCountryIso
和
GetSimCountryIso
http://developer.android.com/reference/android/telephony/TelephonyManager.html#getSimCountryIso()
說明
getNetworkCountryIso()
會給你一個用戶被currenty註冊爲國家ISO。
即:如果從阿爾巴尼亞(AL)是去旅行到美國(美國),這將返回「US」
getSimCountryIso()
會給你的iso爲所在國的SIM卡供應商的國家代碼。 。
即:如果從阿爾巴尼亞(AL)是去旅行到美國(美國),這將返回 「人」
UPDATE
您可以集成(如果服務器端可用) http://www.whois.net/ip-address-lookup/尋找設備IP地址。你可以像這樣得到IP。
隨着所有這些功能(WiFi版,網絡提供商,IP,GPS,谷歌播放的區域),可以減少很多您的應用程序的使用限制的組合。另一方面,如果用戶使用代理僞造IP,無法開啓Wifi/GPS並且沒有SIM卡,那麼就沒有更多的事情要做。
希望它能幫助:)
這真的令人鼓舞,但如果用戶沒有安裝任何SIM卡,該怎麼辦? –
@SyedMuhammadUmair更新了我的答案,我很抱歉地告訴你,剩下的事情不多。 – axierjhtjz
這將是非常罕見的情況下,但爲此,我們可以檢查已安裝的應用程序檢測到任何着名的VPN安裝:) –
作爲延續到我的評論,你可以通過國家代碼過濾用戶的這些行去。
問題 - 只有一些運營商將電話號碼存儲在實際的SIM卡上。如果是這樣,你就可以使用
TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
爲了避免這些誰不存儲在SIM卡的實際數量的載波的情況下獲得它 - 沒有辦法來檢索數看不是保存在通電話。 所以,我會做什麼,只是在第一次運行的應用程序,請求用戶輸入他的完整電話號碼(包括國家代碼) - 並將其存儲在SharedPrefs中。然後,你會知道是否運行該應用程序。
祝你好運,希望這有助於!
請求用戶的號碼將允許他假冒他的區域 –
正確的,但有可能他會給出一個假數字並不高。 – gilonm
好吧,使用黑客安裝配置限制應用的機會遠遠低於你的,但我願意迎合最大的可能性。 –
也許嘗試使用移動運營商過濾用戶?例如國家或地區代碼...... – gilonm