title: checkSelfPermission method is not working in targetSdkVersion 22
body: <p><code>CheckSelfPermission</code> method is not working as expected and it is always returning zero in android 6.0(Marshmallow). Because the target sdk is 22 and i am using http Client for network connection. Following is the code snippet.</p>
  
  <pre><code>private void insertDummyContactWrapper() {
      List&lt;String&gt; permissionsNeeded = new ArrayList&lt;String&gt;();
  
      final List&lt;String&gt; permissionsList = new ArrayList&lt;String&gt;();
      if (!addPermission(permissionsList, Manifest.permission.ACCESS_FINE_LOCATION))
          permissionsNeeded.add("GPS");
      if (!addPermission(permissionsList, Manifest.permission.READ_CONTACTS))
          permissionsNeeded.add("Read Contacts");
      if (!addPermission(permissionsList, Manifest.permission.WRITE_CONTACTS))
          permissionsNeeded.add("Write Contacts");
  
      if (permissionsList.size() &gt; 0) {
          if (permissionsNeeded.size() &gt; 0) {
              // Need Rationale
              String message = "You need to grant access to " + permissionsNeeded.get(0);
              for (int i = 1; i &lt; permissionsNeeded.size(); i++)
                  message = message + ", " + permissionsNeeded.get(i);
              showMessageOKCancel(message,
                      new DialogInterface.OnClickListener() {
                          @Override
                          public void onClick(DialogInterface dialog, int which) {
                              requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
                                      REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
                          }
                      });
              return;
          }
          requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
                  REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
          return;
      }
  
      insertDummyContact();
  }
  
  @TargetApi(Build.VERSION_CODES.M)
  private boolean addPermission(List&lt;String&gt; permissionsList, String permission) {
      if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
          permissionsList.add(permission);
          // Check for Rationale Option
          if (!shouldShowRequestPermissionRationale(permission)) return false;
      }
      return true;
  }
  
  private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) {
      new AlertDialog.Builder(MainActivity.this)
              .setMessage(message)
              .setPositiveButton("OK", okListener)
              .setNegativeButton("Cancel", null)
              .create()
              .show();
  }
  
  @Override
  public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
      switch (requestCode) {
          case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS: {
              Map&lt;String, Integer&gt; perms = new HashMap&lt;String, Integer&gt;();
              // Initial
              perms.put(Manifest.permission.ACCESS_FINE_LOCATION, PackageManager.PERMISSION_GRANTED);
              perms.put(Manifest.permission.READ_CONTACTS, PackageManager.PERMISSION_GRANTED);
              perms.put(Manifest.permission.WRITE_CONTACTS, PackageManager.PERMISSION_GRANTED);
              // Fill with results
              for (int i = 0; i &lt; permissions.length; i++)
                  perms.put(permissions[i], grantResults[i]);
              // Check for ACCESS_FINE_LOCATION
              if (perms.get(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED &amp;&amp; perms.get(Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED &amp;&amp; perms.get(Manifest.permission.WRITE_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
                  // All Permissions Granted
                  insertDummyContact();
              } else {
                  // Permission Denied
                  Toast.makeText(MainActivity.this, "Some Permission is Denied", Toast.LENGTH_SHORT)
                          .show();
              }
          }
          break;
          default:
              super.onRequestPermissionsResult(requestCode, permissions, grantResults);
      }
  }"
  </code></pre>