title: Android SecurityException: Permission Denial
body: <p>I have permission problems in my Android app:
  here the log.</p>
  
  <pre><code>06-25 17:25:35.862  12039-13799/? E/DatabaseUtils﹕ Writing exception to parcel
  java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=1580, uid=10108 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
          at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:605)
          at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:480)
          at android.content.ContentProvider$Transport.query(ContentProvider.java:211)
          at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112)
          at android.os.Binder.execTransact(Binder.java:453)
  
  
  
  06-25 17:25:35.870    1580-2997/? E/iu.UploadsManager﹕ Insufficient permissions to access media store
  java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=1580, uid=10108 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
          at android.os.Parcel.readException(Parcel.java:1599)
          at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
          at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
          at android.content.ContentProviderProxy.query(ContentProviderNative.java:421)
          at android.content.ContentResolver.query(ContentResolver.java:498)
          at android.content.ContentResolver.query(ContentResolver.java:441)
          at ifh.i(PG:5904)
          at ifh.h(PG:619)
          at ifh.&lt;init&gt;(PG:187)
          at iel.c(PG:4045)
          at gen_binder.root.RootModule$Generated.a(PG:1131)
          at nmw.e(PG:415)
          at nmw.b(PG:242)
          at nmw.a(PG:207)
          at nmw.a(PG:493)
          at ier.a(PG:2195)
          at ier.onPerformSync(PG:125)
          at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:272)
  
  
  06-25 17:24:37.031    1580-1611/? E/GooglePlusContactsSync﹕ Failed to clear out contacts
  java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.ContactsProvider2ForLG from ProcessRecord{9557af9 1580:com.google.android.apps.plus/u0a108} (pid=1580, uid=10108) requires android.permission.READ_CONTACTS or android.permission.WRITE_CONTACTS
          at android.os.Parcel.readException(Parcel.java:1599)
          at android.os.Parcel.readException(Parcel.java:1552)
          at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:3652)
          at android.app.ActivityThread.acquireProvider(ActivityThread.java:4866)
          at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2020)
          at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1488)
          at android.content.ContentResolver.query(ContentResolver.java:482)
          at android.content.ContentResolver.query(ContentResolver.java:441)
          at dpm.a(PG:397)
          at dpm.b(PG:1345)
          at dpn.run(PG:282)
          at java.lang.Thread.run(Thread.java:818)
  </code></pre>
  
  <p>I know it's a permissions problem and I could solve with grant permission like this:</p>
  
  <pre><code>// Here, thisActivity is the current activity
  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 expanation 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>and then using this to set permission to my providers:</p>
  
  <pre><code>    @Override
  public void onRequestPermissionsResult(int requestCode,
          String permissions[], int[] grantResults) {
      switch (requestCode) {
          case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
              // If request is cancelled, the result arrays are empty.
              if (grantResults.length &gt; 0
                  &amp;&amp; grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  
                  // permission was granted, yay! Do the
                  // contacts-related task you need to do.
  
              } else {
  
                  // permission denied, boo! Disable the
                  // functionality that depends on this permission.
              }
              return;
          }
  
          // other 'case' lines to check for other
          // permissions this app might request
      }
  }
  </code></pre>
  
  <p>The problem is that I don't know in what part of my project I have to put this permission request:
  I'm using Auth0 Custom UI autenthication for login, Mysqlite as internal database and GoogleCards for a ListView.</p>
  
  <p>Can you help me to understand how to grant this Permission Denial?</p>
  
  <p>Thank you very much </p>