Android从谷歌帐户检索用户国家
Posted
技术标签:
【中文标题】Android从谷歌帐户检索用户国家【英文标题】:Android retrieve user country from google account 【发布时间】:2016-09-20 02:09:23 【问题描述】:我正在开发基于用户国家/地区进行内容过滤的应用。据我所知,可以通过 App Store 在 ios 上获取国家/地区。是否有可能通过 Google Play 在 android 上执行此操作?
不可接受的解决方案列表:
-
语言环境:用户可能住在法国,但有英语语言环境,所以这个
不管用。
电话经理:平板电脑呢?如果用户
出国换了sim卡?
IP 或地理位置:用户可能出国,所以没有过滤。
我的应用有应用内购买,我可以获取 ISO 4217 中的货币代码。但是这个部分解决方案,欧元区呢?
【问题讨论】:
developers.google.com/maps/documentation/geocoding/… @IntelliJAmiya 我不能使用 IP 或地理位置。见#3 如果您想从 Google 帐户获取信息,请向 Google 发出 REST 调用以读取他们的个人资料。配置文件中的字段之一是位置(我忘记是城市还是国家)。通过 OAuth 进行身份验证。此解决方案独立于 Android — 也适用于 iOS 应用或 Web 应用。 我正在寻找相同的功能,您能找到任何解决方案吗? 【参考方案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
以过滤您的内容。以上是关于Android从谷歌帐户检索用户国家的主要内容,如果未能解决你的问题,请参考以下文章
试图从谷歌地图获取纬度是通过 Android 中的意图返回 null
laravel socialite 从谷歌授权码获取谷歌访问令牌