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

如何从谷歌地图v2 android中的标记获取屏幕坐标

Android以编程方式从谷歌播放服务获取排行榜名称

laravel socialite 从谷歌授权码获取谷歌访问令牌

[Android编译] 从谷歌官网下载android 6.0源码编译并刷入nexus 6p手机

如何从谷歌地图 api android 中删除多余的折线