Automated cherry pick of #3463 (#3464)

* MM-18647 Request only needed Android permissions for storage and camera

* Remove build folder from patch
This commit is contained in:
Mattermost Build 2019-10-24 21:01:15 +02:00 committed by Elias Nahum
parent 8b8a375c21
commit a9bef63352

View file

@ -1,3 +1,65 @@
diff --git a/node_modules/react-native-image-picker/android/src/main/java/com/imagepicker/ImagePickerModule.java b/node_modules/react-native-image-picker/android/src/main/java/com/imagepicker/ImagePickerModule.java
index b4311eb..9d3f3d2 100644
--- a/node_modules/react-native-image-picker/android/src/main/java/com/imagepicker/ImagePickerModule.java
+++ b/node_modules/react-native-image-picker/android/src/main/java/com/imagepicker/ImagePickerModule.java
@@ -47,6 +47,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.lang.ref.WeakReference;
import java.util.List;
+import java.util.ArrayList;
import com.facebook.react.modules.core.PermissionListener;
import com.facebook.react.modules.core.PermissionAwareActivity;
@@ -542,14 +543,23 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
@NonNull final Callback callback,
@NonNull final int requestCode)
{
- final int writePermission = ActivityCompat
- .checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
- final int cameraPermission = ActivityCompat
+ int selfCheckResult = 0;
+ switch (requestCode) {
+ case REQUEST_PERMISSIONS_FOR_CAMERA:
+ selfCheckResult = ActivityCompat
.checkSelfPermission(activity, Manifest.permission.CAMERA);
+ if (selfCheckResult == PackageManager.PERMISSION_GRANTED) {
+ selfCheckResult = ActivityCompat
+ .checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
+ }
+ break;
+ case REQUEST_PERMISSIONS_FOR_LIBRARY:
+ selfCheckResult = ActivityCompat
+ .checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
+ break;
+ }
- final boolean permissionsGrated = writePermission == PackageManager.PERMISSION_GRANTED &&
- cameraPermission == PackageManager.PERMISSION_GRANTED;
-
+ final boolean permissionsGrated = selfCheckResult == PackageManager.PERMISSION_GRANTED;
if (!permissionsGrated)
{
final Boolean dontAskAgain = ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) && ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.CAMERA);
@@ -598,7 +608,18 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
}
else
{
- String[] PERMISSIONS = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA};
+ List<String> permissions = new ArrayList<String>();
+ if (requestCode == REQUEST_PERMISSIONS_FOR_CAMERA )
+ {
+ permissions.add(Manifest.permission.CAMERA);
+ permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
+ }
+ if (requestCode == REQUEST_PERMISSIONS_FOR_LIBRARY )
+ {
+ permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
+ }
+
+ String[] PERMISSIONS = permissions.toArray(new String[0]);
if (activity instanceof ReactActivity)
{
((ReactActivity) activity).requestPermissions(PERMISSIONS, requestCode, listener);
diff --git a/node_modules/react-native-image-picker/ios/ImagePickerManager.m b/node_modules/react-native-image-picker/ios/ImagePickerManager.m
index 28d5870..3f70983 100644
--- a/node_modules/react-native-image-picker/ios/ImagePickerManager.m
@ -27,4 +89,4 @@ index 28d5870..3f70983 100644
+ }
}
}