code: @Override
      public void onRequestPermissionsResult(int requestCode,
                                             @NonNull String[] permissions,
                                             @NonNull int[] grantResults) {
          // If arrays are empty, then process was cancelled
          if (permissions.length == 0) {
              // Treat this as a cancel press
              if (mListener != null) {
                  mListener.onCancelled();
              }
          } else { // if (requestCode == PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE) {
              if (PackageManager.PERMISSION_GRANTED == grantResults[0]) {
                  // Do refresh
                  if (mRequestedPath != null) {
                      refresh(mRequestedPath);
                  }
              } else {
                  Toast.makeText(getContext(), R.string.nnf_permission_external_write_denied,
                          Toast.LENGTH_SHORT).show();
                  // Treat this as a cancel press
                  if (mListener != null) {
                      mListener.onCancelled();
                  }
              }
          }
      }
docs: This the method that gets notified when permission is granted/denied. By default,
  a granted request will result in a refresh of the list.
  
  @param requestCode  the code you requested
  @param permissions  array of permissions you requested. empty if process was cancelled.
  @param grantResults results for requests. empty if process was cancelled.