From f69ba2a67417e51555eb5926851592ecf1b84601 Mon Sep 17 00:00:00 2001 From: jcesarmobile Date: Sat, 22 Sep 2018 02:07:06 +0200 Subject: [PATCH] GH-102 Catch ActivityNotFoundException (#104) --- src/android/Capture.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/android/Capture.java b/src/android/Capture.java index 24578bc8..33c3413b 100644 --- a/src/android/Capture.java +++ b/src/android/Capture.java @@ -27,6 +27,7 @@ Licensed to the Apache Software Foundation (ASF) under one import java.lang.reflect.Method; import java.util.Arrays; +import android.content.ActivityNotFoundException; import android.os.Build; import android.os.Bundle; @@ -75,6 +76,7 @@ public class Capture extends CordovaPlugin { // private static final int CAPTURE_INVALID_ARGUMENT = 2; private static final int CAPTURE_NO_MEDIA_FILES = 3; private static final int CAPTURE_PERMISSION_DENIED = 4; + private static final int CAPTURE_NOT_SUPPORTED = 20; private boolean cameraPermissionInManifest; // Whether or not the CAMERA permission is declared in AndroidManifest.xml @@ -229,9 +231,13 @@ private void captureAudio(Request req) { 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); + try { + 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); + } catch (ActivityNotFoundException ex) { + pendingRequests.resolveWithFailure(req, createErrorObject(CAPTURE_NOT_SUPPORTED, "No Activity found to handle Audio Capture.")); + } } }