# Handling blocking issues

For the SDK to be able to accomplish its main task, that is tracking the device position, the following requirements must be met:

* The foreground location permission must be granted to the app
* The background location permission must be granted to the app, if it meets the Google Play Store policies for background location
* The location functionality must be enabled on the device
* Google Play Services must be installed on the device (almost always met)

The SDK provides a simple way for checking all the requirements and optionally solve the related issues. Solving an issue generally implies showing an alert to the User. Depending on the specific requirement, a different alert will be shown.

The example below shows hot to check for all requirements and solve them. In the example, the check is performed on the `onStart()` method of the main activity

{% tabs %}
{% tab title="Java" %}

```java
public class MainActivity extends Activity {

    private GeoUniq geoUniq;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.geoUniq = GeoUniq.getInstance(this);
        this.geoUniq.enable();
    }

    @Override
    protected void onStart() {
        super.onStart();
        // This is to automatically handle location permission and other possible issues that would prevent GeoUniq to work correctly
        this.setErrorListener();
    }


    /**
     * Sets an Error listener to automatically handle those situations that would prevent the SDK to work properly
     */
    private void setErrorListener(){

        this.geoUniq.setErrorListener(new GeoUniq.IErrorListener() {
            @Override
            public void onError(GeoUniq.RequestResult requestResult) {
                if(requestResult.hasResolution()){
                    requestResult.startResolution(MainActivity.this);
                }
            }
        });
    }
}
```

{% endtab %}
{% endtabs %}
