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() {