title: what is the difference between contextcompat.checkselfPermission() and activitycompat.requestPermission()?
body: <pre><code>if (ContextCompat.checkSelfPermission(thisActivity,
              Manifest.permission.READ_CONTACTS)
      != PackageManager.PERMISSION_GRANTED) {
  
  // Should we show an explanation?
  if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
          Manifest.permission.READ_CONTACTS)) {
  
      // Show an explanation to the user *asynchronously* -- don't block
      // this thread waiting for the user's response! After the user
      // sees the explanation, try again to request the permission.
  
  } else {
  
      // No explanation needed, we can request the permission.
  
      ActivityCompat.requestPermissions(thisActivity,
              new String[]{Manifest.permission.READ_CONTACTS},
              MY_PERMISSIONS_REQUEST_READ_CONTACTS);
  
      // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
      // app-defined int constant. The callback method gets the
      // result of the request.
  }
  </code></pre>
  
  <p>Here i am checking whether the permisssion is granted with "ContextCompat" and again i am requesting Permission with ActvityCompat... 
  I need to know what is the difference in these two methods? </p>