2014-02-13 38 views
2

我希望我的應用程序在特定區域(例如美國)工作。將Android應用程序限制在特定區域

我們可以限制遊戲市場的應用程序分佈,但我發現有一些黑客來安裝這些應用程序。

我必須以某種方式限制應用程序內的使用。

爲此,我可以檢索用戶的GPS位置並使用Google的Geocode API進行首次運行。但是如果用戶旅行到其他地區呢?

我將不得不使用位置更改偵聽器來迎合這種情況,但這會消耗電池電量。

如果我去設備的時區,用戶可以更改它。

有什麼其他的事情,我可以做,限制應用程序到特定區域?

+0

也許嘗試使用移動運營商過濾用戶?例如國家或地區代碼...... – gilonm

回答

2

您還可以檢查用戶註冊與TelephonyManager

網絡你有2種方法,可以是有益的。

GetNetworkCountryIso

http://developer.android.com/reference/android/telephony/TelephonyManager.html#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。

How to get IP address of the device from code?

隨着所有這些功能(WiFi版,網絡提供商,IP,GPS,谷歌播放的區域),可以減少很多您的應用程序的使用限制的組合。另一方面,如果用戶使用代理僞造IP,無法開啓Wifi/GPS並且沒有SIM卡,那麼就沒有更多的事情要做。


希望它能幫助:)

+0

這真的令人鼓舞,但如果用戶沒有安裝任何SIM卡,該怎麼辦? –

+0

@SyedMuhammadUmair更新了我的答案,我很抱歉地告訴你,剩下的事情不多。 – axierjhtjz

+0

這將是非常罕見的情況下,但爲此,我們可以檢查已安裝的應用程序檢測到任何着名的VPN安裝:) –

0

作爲延續到我的評論,你可以通過國家代碼過濾用戶的這些行去。

問題 - 只有一些運營商將電話號碼存儲在實際的SIM卡上。如果是這樣,你就可以使用

TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); 
    String mPhoneNumber = tMgr.getLine1Number(); 

爲了避免這些誰不存儲在SIM卡的實際數量的載波的情況下獲得它 - 沒有辦法來檢索數看不是保存在通電話。 所以,我會做什麼,只是在第一次運行的應用程序,請求用戶輸入他的完整電話號碼(包括國家代碼) - 並將其存儲在SharedPrefs中。然後,你會知道是否運行該應用程序。

祝你好運,希望這有助於!

+0

請求用戶的號碼將允許他假冒他的區域 –

+0

正確的,但有可能他會給出一個假數字並不高。 – gilonm

+0

好吧,使用黑客安裝配置限制應用的機會遠遠低於你的,但我願意迎合最大的可能性。 –

相關問題