Call requires permissions that may be rejected by user Call requires permissions that may be rejected by user android android

Call requires permissions that may be rejected by user


Which SDK do you use? If you use Marshmallow, then you need to check that the user has granted permission for every location call.

Take a look Here.

You should do something like this:

  if (ContextCompat.checkSelfPermission( this,android.Manifest.permission.ACCESS_COARSE_LOCATION ) != PackageManager.PERMISSION_GRANTED ){    ActivityCompat.requestPermissions(        this,        new String [] { android.Manifest.permission.ACCESS_COARSE_LOCATION },        LocationService.MY_PERMISSION_ACCESS_COURSE_LOCATION    );}

request permission if you dont have it already.

check the link above for more info.


Try my code:

public class MainActivity extends AppCompatActivity {    /* GPS Constant Permission */    private static final int MY_PERMISSION_ACCESS_COARSE_LOCATION = 11;    private static final int MY_PERMISSION_ACCESS_FINE_LOCATION = 12;    /* Position */    private static final int MINIMUM_TIME = 10000;  // 10s    private static final int MINIMUM_DISTANCE = 50; // 50m    /* GPS */    private String mProviderName;    private LocationManager mLocationManager;    private LocationListener mLocationListener;    @Override    protected void onCreate(Bundle savedInstanceState) {        ...        mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);        // Get the best provider between gps, network and passive        Criteria criteria = new Criteria();        mProviderName = mLocationManager.getBestProvider(criteria, true);        // API 23: we have to check if ACCESS_FINE_LOCATION and/or ACCESS_COARSE_LOCATION permission are granted        if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED                || ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {            // No one provider activated: prompt GPS            if (mProviderName == null || mProviderName.equals("")) {                startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));            }            // At least one provider activated. Get the coordinates            switch (mProviderName) {                case "passive":                    mLocationManager.requestLocationUpdates(mProviderName, MINIMUM_TIME, MINIMUM_DISTANCE, this);                    Location location = mLocationManager.getLastKnownLocation(mProviderName);                    break;                case "network":                    break;                case "gps":                    break;            }        // One or both permissions are denied.        } else {            // The ACCESS_COARSE_LOCATION is denied, then I request it and manage the result in            // onRequestPermissionsResult() using the constant MY_PERMISSION_ACCESS_FINE_LOCATION            if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED ) {                ActivityCompat.requestPermissions(this,                        new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},                        MY_PERMISSION_ACCESS_COARSE_LOCATION);            }            // The ACCESS_FINE_LOCATION is denied, then I request it and manage the result in            // onRequestPermissionsResult() using the constant MY_PERMISSION_ACCESS_FINE_LOCATION            if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED ) {                ActivityCompat.requestPermissions(this,                        new String[] { Manifest.permission.ACCESS_FINE_LOCATION },                        MY_PERMISSION_ACCESS_FINE_LOCATION);            }        }    }    @Override    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {        switch (requestCode) {            case MY_PERMISSION_ACCESS_COARSE_LOCATION: {                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {                    // permission was granted                } else {                    // permission denied                }                break;            case MY_PERMISSION_ACCESS_FINE_LOCATION: {                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {                    // permission was granted                } else {                    // permission denied                }                break;            }        }    }}

Source: LINK


This worked for me

if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {   Toast.makeText(YourService.this, "First enable LOCATION ACCESS in settings.", Toast.LENGTH_LONG).show();   return;}locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 1, listener);