Skip to content Skip to sidebar Skip to footer

Cannot Fetch Location In Marshmallow After Giving Permission Request

I am developing an location app which is working fine in all devices except in Marshmallow.I have requested permission during runtime and when I grant permission longitude and lati

Solution 1:

try this

step 1 :- add this permission in manifiesr file

 android.Manifest.permission.ACCESS_FINE_LOCATION,
 android.Manifest.permission.ACCESS_COARSE_LOCATION,

step 2 : ask runtime permission

 String permission = android.Manifest.permission.ACCESS_FINE_LOCATION;
            if (ActivityCompat.checkSelfPermission(SearchCityClass.this, permission)
                    != PackageManager.PERMISSION_GRANTED && ActivityCompat.
                    checkSelfPermission(SearchCityClass.this, android.Manifest.permission.ACCESS_COARSE_LOCATION)
                    != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(SearchCityClass.this, new String[]
                        {permission}, PERMISSION_GPS_CODE);

            }

step 3: handle permsiion result

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                       @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == PERMISSION_GPS_CODE) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {


            Toast.makeText(this, location_permission_granted_msg, Toast.LENGTH_SHORT).show();

        } else {

            Toast.makeText(this, location_permission_not_granted_msg, Toast.LENGTH_SHORT).show();
        }
    }

}

Solution 2:

You have to give run time permission for android 6 like this

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) {
                    // Permission already Granted//Do your work here//Perform operations here only which requires permission
            } else {
                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
            }

and if permission is not already granted override onRequestPermission Results like this

@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            if (requestCode == 1) {
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                            //Permission Granted//Do your work here//Perform operations here only which requires permission
                }
            }
        }

Solution 3:

Add this code your Activity class

@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_images);

    requestLocationPermission();
    //your other codes
}

privatevoidrequestLocationPermission() {

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) {

        } else {
            ActivityCompat.requestPermissions(this, newString[]
   {
    Manifest.permission.ACCESS_FINE_LOCATION, 
    Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
    }
}

@OverridepublicvoidonRequestPermissionsResult(int requestCode, @NonNullString[] permissions, @NonNull int[] grantResults) {

    //Checking the request code of our request//If permission is grantedif (requestCode == 1) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            //Displaying a toastToast.makeText(this, "Permission granted now you can get the location", Toast.LENGTH_LONG).show();

            } else {
            //Displaying another toast if permission is not grantedToast.makeText(this, "Oops you just denied the permission", Toast.LENGTH_LONG).show();
           }
}

Add this on your Mainfest XML

<uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/>

Post a Comment for "Cannot Fetch Location In Marshmallow After Giving Permission Request"