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

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);
                }
            }
        });
    }
}

Last updated