This is an automated email from the ASF dual-hosted git repository.

normanbreau pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/cordova-plugin-media-capture.git


The following commit(s) were added to refs/heads/master by this push:
     new c7a3038  fix(android): remove broad media permissions (#295)
c7a3038 is described below

commit c7a3038634fc3c48ac550032f3eedb6ffcbe2ade
Author: Bastien MARSAUD <p...@bastien-marsaud.fr>
AuthorDate: Wed Dec 18 18:29:00 2024 +0100

    fix(android): remove broad media permissions (#295)
    
    * feat(android): remove broad camera permissions
    
    * chore(android): prefer List over ArrayList when possible
---
 plugin.xml               |  3 ---
 src/android/Capture.java | 28 +++++++++++-----------------
 2 files changed, 11 insertions(+), 20 deletions(-)

diff --git a/plugin.xml b/plugin.xml
index 7e21f29..b3c6715 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -78,9 +78,6 @@ xmlns:android="http://schemas.android.com/apk/res/android";
 
         <config-file target="AndroidManifest.xml" parent="/*">
             <uses-permission android:name="android.permission.RECORD_AUDIO" />
-            <uses-permission 
android:name="android.permission.READ_MEDIA_AUDIO" />
-            <uses-permission 
android:name="android.permission.READ_MEDIA_IMAGES" />
-            <uses-permission 
android:name="android.permission.READ_MEDIA_VIDEO" />
             <uses-permission 
android:name="android.permission.READ_EXTERNAL_STORAGE" 
android:maxSdkVersion="32" />
             <uses-permission 
android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
android:maxSdkVersion="32" />
         </config-file>
diff --git a/src/android/Capture.java b/src/android/Capture.java
index 43bcc57..f321248 100644
--- a/src/android/Capture.java
+++ b/src/android/Capture.java
@@ -25,6 +25,7 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 
 import org.apache.cordova.CallbackContext;
 import org.apache.cordova.CordovaPlugin;
@@ -234,9 +235,9 @@ public class Capture extends CordovaPlugin {
         return obj;
     }
 
-    private boolean isMissingPermissions(Request req, ArrayList<String> 
permissions) {
-        ArrayList<String> missingPermissions = new ArrayList<>();
-        for (String permission: permissions) {
+    private boolean isMissingPermissions(Request req, List<String> 
permissions) {
+        List<String> missingPermissions = new ArrayList<>();
+        for (String permission : permissions) {
             if (!PermissionHelper.hasPermission(this, permission)) {
                 missingPermissions.add(permission);
             }
@@ -250,22 +251,15 @@ public class Capture extends CordovaPlugin {
         return isMissingPermissions;
     }
 
-    private boolean isMissingPermissions(Request req, String mediaPermission) {
-        ArrayList<String> permissions = new 
ArrayList<>(Arrays.asList(storagePermissions));
-        if (mediaPermission != null && android.os.Build.VERSION.SDK_INT >= 
Build.VERSION_CODES.TIRAMISU) {
-            permissions.add(mediaPermission);
-        }
-        return isMissingPermissions(req, permissions);
+    private boolean isMissingPermissions(Request req) {
+        return isMissingPermissions(req, Arrays.asList(storagePermissions));
     }
 
-    private boolean isMissingCameraPermissions(Request req, String 
mediaPermission) {
-        ArrayList<String> cameraPermissions = new 
ArrayList<>(Arrays.asList(storagePermissions));
+    private boolean isMissingCameraPermissions(Request req) {
+        List<String> cameraPermissions = new 
ArrayList<>(Arrays.asList(storagePermissions));
         if (cameraPermissionInManifest) {
             cameraPermissions.add(Manifest.permission.CAMERA);
         }
-        if (mediaPermission != null && android.os.Build.VERSION.SDK_INT >= 
Build.VERSION_CODES.TIRAMISU) {
-            cameraPermissions.add(mediaPermission);
-        }
         return isMissingPermissions(req, cameraPermissions);
     }
 
@@ -273,7 +267,7 @@ public class Capture extends CordovaPlugin {
      * Sets up an intent to capture audio.  Result handled by 
onActivityResult()
      */
     private void captureAudio(Request req) {
-        if (isMissingPermissions(req, Manifest.permission.READ_MEDIA_AUDIO)) 
return;
+        if (isMissingPermissions(req)) return;
 
         try {
             Intent intent = new 
Intent(android.provider.MediaStore.Audio.Media.RECORD_SOUND_ACTION);
@@ -287,7 +281,7 @@ public class Capture extends CordovaPlugin {
      * Sets up an intent to capture images.  Result handled by 
onActivityResult()
      */
     private void captureImage(Request req) {
-        if (isMissingCameraPermissions(req, 
Manifest.permission.READ_MEDIA_IMAGES)) return;
+        if (isMissingCameraPermissions(req)) return;
 
         // Save the number of images currently on disk for later
         this.numPics = queryImgDB(whichContentStore()).getCount();
@@ -309,7 +303,7 @@ public class Capture extends CordovaPlugin {
      * Sets up an intent to capture video.  Result handled by 
onActivityResult()
      */
     private void captureVideo(Request req) {
-        if (isMissingCameraPermissions(req, 
Manifest.permission.READ_MEDIA_VIDEO)) return;
+        if (isMissingCameraPermissions(req)) return;
 
         Intent intent = new 
Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cordova.apache.org
For additional commands, e-mail: commits-h...@cordova.apache.org

Reply via email to