0

可能重复:
用户当前在哪个国家/地区?
如何在不使用 GPS 的情况下以编程方式检测 android 设备当前位于哪个国家/地区?

是否可以根据用户设备所在的国家/地区阻止在用户设备上下载的应用程序启动?如何准确确定用户所在的国家/地区?

我的应用程序将在基于 WiFi 和运营商 (GSM/CDMA) 的设备上可用。

我知道我可以将应用程序限制在 Google Play 上的某些地区,但没有什么可以阻止用户在美国下载该应用程序,然后前往他们自己的国家并使用该应用程序。因此,我想在知道用户在美国境外后立即退出该应用程序。我可以想到这些确定位置的机制,但不确定这些是否是万无一失的:

  1. IMEI - 没用,我可以在美国购买设备,但可以在任何地方使用
  2. SIM - 我可以使用美国的 SIM 并进行漫游等
  3. WiFi - 不要以为我可以准确地告诉用户的地理
  4. 日期/时间设置 - 我总是可以假装我在美国
  5. TelephonyManager - 我不知道这里的任何方法是否有助于准确确定位置

我有哪些选择?

谢谢!

4

4 回答 4

0

如果您的应用需要连接,我会说 IP 地理位置。

于 2013-01-31T16:56:45.337 回答
0

如果用户可以访问设备,他/她总是可以伪造位置。

您必须决定要花费多少精力来阻止人们使用您的应用程序。在您的努力和在美国以外使用您的应用程序的难度之间需要权衡取舍。你永远不会排斥所有人;)

因此,我建议实施一些简单的机制。

于 2013-01-31T17:01:07.110 回答
0

首先,获取 LocationManager。然后,调用 LocationManager.getLastKnown 然后,创建一个 GeoCoder 并调用 GeoCoder.getFromLocation 。这样做是一个单独的线程!这将为您提供地址对象的列表。调用 Address.getCountryName 就可以了。

这可能有用

于 2013-01-31T17:07:51.177 回答
0

您可以在应用程序启动时通过 GPS 获取位置。您可以检查国家/地区,如果不是美国,则用户无法打开应用程序。我认为你应该看看这个:http: //developer.android.com/reference/android/location/Address.html

于 2013-01-31T17:10:43.523 回答