【问题标题】:Android retrieve user country from google accountAndroid从谷歌帐户检索用户国家
【发布时间】:2016-09-20 02:09:23
【问题描述】:

我正在开发基于用户国家/地区进行内容过滤的应用。据我所知,可以通过 App Store 在 iOS 上获取国家/地区。是否有可能通过 Google Play 在 Android 上执行此操作?

不可接受的解决方案列表:

  1. 语言环境:用户可能住在法国,但有英语语言环境,所以这个 不管用。
  2. 电话经理:平板电脑呢?如果用户 出国换了sim卡?
  3. IP 或地理位置:用户可能出国,所以没有过滤。

我的应用有应用内购买,我可以获取 ISO 4217 中的货币代码。但是这个部分解决方案,欧元区呢?

【问题讨论】:

  • @IntelliJAmiya 我不能使用 IP 或地理位置。见#3
  • 如果您想从 Google 帐户获取信息,请向 Google 发出 REST 调用以读取他们的个人资料。配置文件中的字段之一是位置(我忘记是城市还是国家)。通过 OAuth 进行身份验证。此解决方案独立于 Android — 也适用于 iOS 应用或 Web 应用。
  • 我正在寻找相同的功能,您能找到任何解决方案吗?

标签: android location country


【解决方案1】:

您可以使用 Web 服务,该服务将根据用户的 IP 地址返回位置。以下是其中一项网络服务的示例:

private class AsyncTaskClass extends AsyncTask<Void, JSONObject, JSONObject> {

        @Override
        protected JSONObject doInBackground(Void... params) {

            OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder()
                    .url("http://ip-api.com/json")
                    .build();

            try {
                Response response = client.newCall(request).execute();
                return new JSONObject(response.body().string());
            } catch (IOException | JSONException e) {
                e.printStackTrace();
                return null;
            }
        }

        @Override
        protected void onPostExecute(JSONObject data) {
            try {
                Log.i("Country", data.getString("country"));
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }

【讨论】:

  • 我不能用这个,因为如果用户出国了怎么办? IP会有所不同
  • 如果是这种情况,您可以在安装应用时询问用户所在国家/地区并将其存储在SharedPreferences 以过滤您的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 2021-12-21
相关资源
最近更新 更多