1

i disabled the location of mobile but it still show Location already granted in the toast.

 @Override
public void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
    if(Build.VERSION.SDK_INT>=23){

        showRunTimePermission();
    }
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_search_v2, container,
            false);




    return view;
}

//shows alert dialog if location is disabled.

private void showRunTimePermission() {
   if(ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION)!=PackageManager.PERMISSION_GRANTED ||
           ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)!=PackageManager.PERMISSION_GRANTED){
       requestLocationPermission();
   }else{
       Toast.makeText(getActivity(), "Location already granted", Toast.LENGTH_SHORT).show();
   }

}

private void requestLocationPermission() {
    if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(),Manifest.permission.ACCESS_COARSE_LOCATION) || ActivityCompat.shouldShowRequestPermissionRationale(getActivity(),Manifest.permission.ACCESS_FINE_LOCATION)){
        final AlertDialog locationDialog = new AlertDialog.Builder(getActivity())
                .setCancelable(false).create();
        View dialogView = View.inflate(getActivity(), R.layout.dialog_location_access, null);
        TextView okBtn= (TextView) dialogView.findViewById(R.id.dialog_location_ok_button);
        okBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ActivityCompat
                        .requestPermissions(getActivity(), PERMISSIONS_LOCATION,
                                LOCATION_PERMISSIONS_REQUEST);
            }
        });
        TextView denyBtn= (TextView) dialogView.findViewById(R.id.dialog_location_deny_button);
        denyBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                locationDialog.dismiss();
            }
        });

        locationDialog.setView(dialogView);

        locationDialog.show();

    }else{
        ActivityCompat.requestPermissions(getActivity(), PERMISSIONS_LOCATION,
                LOCATION_PERMISSIONS_REQUEST);
    }
}

// if the location is on or off the toast will appear accordingly.

    @Override
public void onRequestPermissionsResult(int requestCode, String[]        permissions, int[] grantResults) {
    if (requestCode==LOCATION_PERMISSIONS_REQUEST){
        if (grantResults.length == 1 &&
                grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(getActivity(), "Location granted", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getActivity(), "Location permission denied", Toast.LENGTH_SHORT).show();
        }
    }else {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }

}
arps
  • 407
  • 1
  • 3
  • 11

2 Answers2

0

Enabled location and granted permission for location are two different things. To check if location is enabled: How to check if Location Services are enabled?

Community
  • 1
  • 1
egoldx
  • 1,490
  • 1
  • 9
  • 14
0

Well, In this before asking permission you need to check that whether permission is granted or not and then you have to ask permission!

Try this Library this will help you to ask permission Automatically you just need to pass permission Name.

Uttam Panchasara
  • 5,735
  • 5
  • 25
  • 41