CB-11396 - Audio Media Capture Crashes if app stores file on external storage
diff --git a/plugin.xml b/plugin.xml
index d4082aa..9342b4d 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -77,6 +77,7 @@
         <config-file target="AndroidManifest.xml" parent="/*">
             <uses-permission android:name="android.permission.RECORD_AUDIO" />
             <uses-permission android:name="android.permission.RECORD_VIDEO"/>
+            <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
             <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
         </config-file>
 
diff --git a/src/android/Capture.java b/src/android/Capture.java
index befca96..3ba5132 100644
--- a/src/android/Capture.java
+++ b/src/android/Capture.java
@@ -223,9 +223,13 @@
      * Sets up an intent to capture audio.  Result handled by onActivityResult()
      */
     private void captureAudio(Request req) {
-        Intent intent = new Intent(android.provider.MediaStore.Audio.Media.RECORD_SOUND_ACTION);
+      if (!PermissionHelper.hasPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)) {
+          PermissionHelper.requestPermission(this, req.requestCode, Manifest.permission.READ_EXTERNAL_STORAGE);
+      } else {
+          Intent intent = new Intent(android.provider.MediaStore.Audio.Media.RECORD_SOUND_ACTION);
 
-        this.cordova.startActivityForResult((CordovaPlugin) this, intent, req.requestCode);
+          this.cordova.startActivityForResult((CordovaPlugin) this, intent, req.requestCode);
+      }
     }
 
     private String getTempDirectoryPath() {