如果从设置中关闭位置,则获取位置

Posted

技术标签:

【中文标题】如果从设置中关闭位置,则获取位置【英文标题】:get location if the location is turned off from settings 【发布时间】:2015-07-29 04:58:44 【问题描述】:

我需要从 android 设备获取 lat/lng,但限制是我的设备位置已从设置中关闭,用户要求不要打开位置。

那么是否可以从设备获取 lat/lng?

【问题讨论】:

您可以获得最后一个位置,但这不是完美的位置。因此,如果要在应用程序中使用位置,则需要在位置服务上。欲了解更多信息developer.android.com/training/location/retrieve-current.html 如果从设置中启用了位置,则可以使用最后位置,如果不启用,则无法获取最后位置。 【参考方案1】:

您必须使用 LocationManager。

阅读Documentation。

编辑:- 抱歉,据我所知没有办法。在用户不想时获取位置,是不可能通过道德手段获得的。

【讨论】:

如果开启了定位服务,则使用定位管理器。【参考方案2】:

当位置关闭时调用这个 Intent

startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS),110);

或者当你想获取用户位置时调用这个方法。

public boolean isLocationEnable() 
    LocationManager locationManager;
    if (locationManager == null)
        locationManager = (LocationManager) this
                .getSystemService(Context.LOCATION_SERVICE);
    boolean gps_enabled = false;
    try 
        gps_enabled = locationManager
                .isProviderEnabled(LocationManager.GPS_PROVIDER);
     catch (Exception ex) 
    
    boolean network_enabled = false;
    try 
        network_enabled = locationManager
                .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
     catch (Exception ex) 
    

    if (!gps_enabled && !network_enabled) 
        Builder dialog = new AlertDialog.Builder(this);
        dialog.setMessage("Activate Location");
        dialog.setCancelable(false);
        dialog.setPositiveButton("Setting",
                new DialogInterface.OnClickListener() 

                    @Override
                    public void onClick(
                            DialogInterface paramDialogInterface,
                            int paramInt) 
                        // TODO Auto-generated method stub
                        startActivityForResult(
                                new Intent(
                                        android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS),
                                110);
                    
                );
        dialog.setNegativeButton("Cancel",
                new DialogInterface.OnClickListener() 

                    @Override
                    public void onClick(
                            DialogInterface paramDialogInterface,
                            int paramInt) 
                    
                );
        dialog.show();
        return false;
     else 
        return true;
    

【讨论】:

以上是关于如果从设置中关闭位置,则获取位置的主要内容,如果未能解决你的问题,请参考以下文章

暂时无法连接网络微信需要获取你的地理位置是怎么了

当我在谷歌设置android中关闭和打开位置时,FusedLocation 不起作用

是否可以在 WKWebView 中关闭位置权限?

Android:如果手机通过 WiFi 连接,则无法从网络获取地理位置

QT中关于QString用法

即使应用程序在android中关闭,如何在服务应该工作时添加位置权限?