title: How to get read external storage permissions?
body: <p>I'm developing an mp3 player application for android and I'm getting an error related to user permissions(READ_EXTERNAL_STORAGE)</p>
  
  <p>This is my code where I ask for permissions:</p>
  
  <pre><code>int permissionCheck = ContextCompat.checkSelfPermission(PlayListActivity.this,
                  Manifest.permission.READ_EXTERNAL_STORAGE);
  
          if (ContextCompat.checkSelfPermission(PlayListActivity.this,
                  Manifest.permission.READ_EXTERNAL_STORAGE)
                  != PackageManager.PERMISSION_GRANTED) {
  
  
              // OPCIONAL(explicaciones de poque pedimos los permisos)
              if (ActivityCompat.shouldShowRequestPermissionRationale(PlayListActivity.this,
                      Manifest.permission.READ_EXTERNAL_STORAGE)) {
  
              } else {
                  //pedir permisos
                  ActivityCompat.requestPermissions(PlayListActivity.this,
                          new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                          permissionCheck);
  </code></pre>
  
  <p>and this is the rest of the code:</p>
  
  <pre><code>ArrayList&lt;HashMap&lt;String, String&gt;&gt; songsListData = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;();
  
      SongsManager plm = new SongsManager(PlayListActivity.this);
      // get all songs from sdcard
      this.songsList = plm.getPlayList();
  
      // looping through playlist
      for (int i = 0; i &lt; songsList.size(); i++) {
          // creating new HashMap
          HashMap&lt;String, String&gt; song = songsList.get(i);
  
          // adding HashList to ArrayList
          songsListData.add(song);
      }
  
      // se añaden las canciones a la ListView mediante un adapter utilizando el layout playlist_item
      ListAdapter adapter = new SimpleAdapter(this, songsListData,
              R.layout.playlist_item, new String[] { "songTitle" }, new int[] {
              R.id.songTitle });
  
      setListAdapter(adapter);
  </code></pre>
  
  <p>this is the error:</p>
  
  <pre><code>03-31 22:09:16.159 2258-2258/com.androidchatapp E/AndroidRuntime: FATAL EXCEPTION: main
      Process: com.androidchatapp, PID: 2258
      java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidchatapp/com.androidchatapp.PlayListActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media from pid=2258, uid=10184 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2434)
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
      at android.app.ActivityThread.access$900(ActivityThread.java:153)
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347)
      at android.os.Handler.dispatchMessage(Handler.java:102)
      at android.os.Looper.loop(Looper.java:148)
      at android.app.ActivityThread.main(ActivityThread.java:5451)
      at java.lang.reflect.Method.invoke(Native Method)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
      Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media from pid=2258, uid=10184 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
      at android.os.Parcel.readException(Parcel.java:1620)
      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:493)
      at android.content.ContentResolver.query(ContentResolver.java:435)
      at com.androidchatapp.SongsManager.getPlayList(SongsManager.java:48)
      at com.androidchatapp.PlayListActivity.onCreate(PlayListActivity.java:65)
      at android.app.Activity.performCreate(Activity.java:6323)
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387)
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
      at android.app.ActivityThread.access$900(ActivityThread.java:153)
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347)
      at android.os.Handler.dispatchMessage(Handler.java:102)
      at android.os.Looper.loop(Looper.java:148)
      at android.app.ActivityThread.main(ActivityThread.java:5451)
      at java.lang.reflect.Method.invoke(Native Method)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
  </code></pre>