Check if 'Access to my location' is enabled - Android

后端 未结 5 713
无人共我
无人共我 2021-02-02 13:33

I have an android app that uses location. But I noticed that if users disable the \'Access to my location\' in Settings > Location access, nothing works anymore. How can I check

相关标签:
5条回答
  • 2021-02-02 13:57

    An alternative way to do that without using Settings.Secure and without scanning all location providers would be to do:

    LocationManager locationManager = (LocationManager) getContext().getSystemService(Context.LOCATION_SERVICE);
    int providersCount = locationManager.getProviders(true).size(); // Listing enabled providers only
    if (providersCount == 0) {
        // No location providers at all, location is off
    } 
    
    0 讨论(0)
  • 2021-02-02 13:57

    Unfortunately, it seems the using of Settings.Secure.LOCATION_PROVIDERS_ALLOWED is deprecated since API 19.

    A new way to do that would be:

    int locationMode = Settings.Secure.getInt(
        getContentResolver(),
        Settings.Secure.LOCATION_MODE,
        Settings.Secure.LOCATION_MODE_OFF // Default value if not found
    );
    
    if (locationMode == Settings.Secure.LOCATION_MODE_OFF) {
        // Location is off
    }
    
    0 讨论(0)
  • 2021-02-02 14:01

    You can check it like that:

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) // Return a boolean
    

    EDIT:

    If you want to check the network provider:

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER) // Return a boolean
    

    EDIT 2:

    If you want to open the settings, you can use this intent:

    Intent intent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
    
    0 讨论(0)
  • 2021-02-02 14:17

    may be this will be useful check this site it discusses about location service

    http://www.scotthelme.co.uk/android-location-services/

    0 讨论(0)
  • 2021-02-02 14:19

    There are two ways to check location, 1-using GPS 2-using network provider its better to check both service are enabled or not.For that use this method :)

    public boolean checkServices(){
        //check location service
        LocationManager locationManager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
        if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) &&
                locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
                return true;
        }
    }
    
    0 讨论(0)
提交回复
热议问题