Allow fine location permission to replace fragment

余生颓废 提交于 2019-12-02 13:17:13

Please check below solution, hope it will work properly for you.

 else if (id == R.id.nav_locator) 
 {
    int result = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION);
   if (result == PackageManager.PERMISSION_GRANTED){

       goToNextFragment();

   } else {

       requestForLocationPermission(); 
   }
 }


   private void requestForLocationPermission()
   {

      if (ActivityCompat.shouldShowRequestPermissionRationale(activity,Manifest.permission.ACCESS_FINE_LOCATION))
      {
      } 
      else {

          ActivityCompat.requestPermissions(activity,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},PERMISSION_REQUEST_CODE);
      }
   }

  @Override
  public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) 
  {
      switch (requestCode) {
       case PERMISSION_REQUEST_CODE:
           if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
           goToNextFragment();
        } 
        break;
  }
}


  public void goToNextFragment()
  {
      Fragment fragment = new LocatorFragment();
      FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
      ft.replace(R.id.fragmentlayout, fragment);
      ft.commit();
  }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!