CB-10120 android: Fixing use of constants and PermissionHelper

This closes #179


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/commit/0cd96246
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/tree/0cd96246
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/diff/0cd96246

Branch: refs/heads/master
Commit: 0cd962466d2641fcd05155690e23432db02cc79a
Parents: c12206e
Author: riknoll <richard.b.kn...@gmail.com>
Authored: Wed Feb 24 14:51:52 2016 -0800
Committer: Richard Knoll <richard.b.kn...@gmail.com>
Committed: Mon Mar 14 17:56:52 2016 -0700

----------------------------------------------------------------------
 src/android/CameraLauncher.java | 64 +++++++++++++++++-------------------
 1 file changed, 31 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/blob/0cd96246/src/android/CameraLauncher.java
----------------------------------------------------------------------
diff --git a/src/android/CameraLauncher.java b/src/android/CameraLauncher.java
index f7ada36..0240990 100644
--- a/src/android/CameraLauncher.java
+++ b/src/android/CameraLauncher.java
@@ -117,10 +117,6 @@ public class CameraLauncher extends CordovaPlugin 
implements MediaScannerConnect
     private Uri scanMe;                     // Uri of image to be added to 
content store
     private Uri croppedUri;
 
-    protected void getReadPermission(int requestCode)
-    {
-        cordova.requestPermission(this, requestCode, permissions[requestCode]);
-    }
 
     /**
      * Executes the request and returns PluginResult.
@@ -237,38 +233,40 @@ public class CameraLauncher extends CordovaPlugin 
implements MediaScannerConnect
      * @param returnType        Set the type of image to return.
      */
     public void callTakePicture(int returnType, int encodingType) {
-               boolean takePicturePermission = 
cordova.hasPermission(permissions[TAKE_PIC_SEC]);
-
-               if (!takePicturePermission) {
-                       takePicturePermission = true; // This permission is not 
required, unless we find android.permission.CAMERA in the package
-                       try {
-                               PackageManager packageManager = 
this.cordova.getActivity().getPackageManager();
-                               String[] permissionsInPackage = 
packageManager.getPackageInfo(this.cordova.getActivity().getPackageName(), 
PackageManager.GET_PERMISSIONS).requestedPermissions;
-                               if (permissionsInPackage != null) {
-                                       for (String permission : 
permissionsInPackage) {
-                                               if 
(permission.equals(Manifest.permission.CAMERA)) {
-                                                       takePicturePermission = 
false;
-                                                       break;
-                                               }
-                                       }
-                               }
-                       } catch (NameNotFoundException e) {     }
-               }
-
-               boolean saveAlbumPermission = 
cordova.hasPermission(permissions[SAVE_TO_ALBUM_SEC]);
+        boolean saveAlbumPermission = PermissionHelper.hasPermission(this, 
Manifest.permission.READ_EXTERNAL_STORAGE);
+        boolean takePicturePermission = PermissionHelper.hasPermission(this, 
Manifest.permission.CAMERA);
+
+        // CB-10120: The CAMERA permission does not need to be requested 
unless it is declared
+        // in AndroidManifest.xml. This plugin does not declare it, but others 
may and so we must
+        // check the package info to determine if the permission is present.
+
+        if (!takePicturePermission) {
+            takePicturePermission = true;
+            try {
+                PackageManager packageManager = 
this.cordova.getActivity().getPackageManager();
+                String[] permissionsInPackage = 
packageManager.getPackageInfo(this.cordova.getActivity().getPackageName(), 
PackageManager.GET_PERMISSIONS).requestedPermissions;
+                if (permissionsInPackage != null) {
+                    for (String permission : permissionsInPackage) {
+                        if (permission.equals(Manifest.permission.CAMERA)) {
+                            takePicturePermission = false;
+                            break;
+                        }
+                    }
+                }
+            } catch (NameNotFoundException e) {
+                // We are requesting the info for our package, so this should
+                // never be caught
+            }
+        }
+
         if (takePicturePermission && saveAlbumPermission) {
             takePicture(returnType, encodingType);
+        } else if (saveAlbumPermission && !takePicturePermission) {
+            PermissionHelper.requestPermission(this, TAKE_PIC_SEC, 
Manifest.permission.CAMERA);
+        } else if (!saveAlbumPermission && takePicturePermission) {
+            PermissionHelper.requestPermission(this, TAKE_PIC_SEC, 
Manifest.permission.READ_EXTERNAL_STORAGE);
         } else {
-                       if (saveAlbumPermission && !takePicturePermission) {
-                               cordova.requestPermission(this, TAKE_PIC_SEC, 
permissions[TAKE_PIC_SEC]);
-                       }
-                       else if (!saveAlbumPermission && takePicturePermission) 
{
-                               cordova.requestPermission(this, TAKE_PIC_SEC, 
permissions[SAVE_TO_ALBUM_SEC]);
-                       }
-                       else
-                       {
-                               cordova.requestPermissions(this, TAKE_PIC_SEC, 
permissions);
-                       }
+            PermissionHelper.requestPermissions(this, TAKE_PIC_SEC, 
permissions);
         }
     }
 


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

Reply via email to