【问题标题】:Restrict android application to specific region将android应用程序限制在特定区域
【发布时间】:2014-03-12 03:31:45
【问题描述】:

我希望我的应用程序可以在特定地区工作,例如美国。

我们可以限制从游戏市场分发应用程序,但我发现安装这些应用程序有一些技巧。

我必须以某种方式限制在应用程序中的使用。

为此,我可以检索用户的 GPS 位置并使用 Google 的 Geocode API 进行首次运行。但是如果用户前往其他地区怎么办?

我将不得不使用位置更改侦听器来满足这种情况,但这会消耗电池电量。

如果我选择设备的时区,用户可以更改它。

我还能做些什么来将应用程序限制在特定区域吗?

【问题讨论】:

  • 也许尝试使用移动运营商过滤用户?例如国家代码或类似的东西......

标签: android region restriction


【解决方案1】:

您还可以检查用户使用TelephonyManager注册的网络

您有 2 种方法可以提供帮助。

GetNetworkCountryIso

http://developer.android.com/reference/android/telephony/TelephonyManager.html#getNetworkCountryIso()

获取SimCountryIso

http://developer.android.com/reference/android/telephony/TelephonyManager.html#getSimCountryIso()


说明


getNetworkCountryIso() 将为您提供用户当前注册的国家/地区的 iso。
即:如果您来自阿尔巴尼亚 (al) 并前往美国 (我们),则返回“我们”

getSimCountryIso() 将为您提供 SIM 提供商国家代码所在国家/地区的 iso。
即:如果您来自阿尔巴尼亚 (al) 并前往美国 (我们),这将返回“al”

更新

您可以集成(如果服务器端可用)http://www.whois.net/ip-address-lookup/ 以查找设备 IP 地址。可以这样获取IP。

How to get IP address of the device from code?

结合所有这些功能(Wifi、网络提供商、IP、GPS、Google Play 区域),您可以大大减少应用的使用限制。另一方面,如果用户使用代理来伪造 IP、没有打开 Wifi/GPS 并且没有 SIM 卡,那么就没有什么可做的了。


希望对你有帮助:)

【讨论】:

  • 这确实令人鼓舞,但如果用户没有安装任何 SIM 卡怎么办?
  • @SyedMuhammadUmair 更新了我的答案,很遗憾地告诉你,剩下的工作不多了。
  • 这将是非常罕见的情况,但我们可以检查已安装的应用程序以检测是否安装了任何著名的 VPN:)
  • 祝你好运@SyedMuhammadUmair ;)
【解决方案2】:

作为我评论的延续,您可以通过按国家/地区代码过滤用户的那些行。

问题 - 只有一些运营商将电话号码存储在实际 SIM 卡上。如果是这样,您将能够使用

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

为了避免那些未将实际号码存储在 SIM 卡上的运营商的情况 - 没有办法检索未存储在手机上的号码。 所以,我要做的只是在第一次运行应用程序时,要求用户输入他的完整电话号码(包括国家代码) - 并将其存储在 SharedPrefs 中。然后,您将知道是否运行该应用程序。

祝你好运,希望对你有所帮助!

【讨论】:

  • 请求用户提供他的号码将允许他伪造他的地区
  • 是的,但他提供假号码的可能性并不高。
  • 好吧,使用 hack 安装具有分发限制的应用程序的机会比你的要低得多,但我愿意满足最大的可能性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-24
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
相关资源
最近更新 更多