MM-18647 Request only needed Android permissions for storage and camera (#3463)
* MM-18647 Request only needed Android permissions for storage and camera * Remove build folder from patch
This commit is contained in:
parent
ee2a25df84
commit
4bf6f6e9da
2 changed files with 78 additions and 7 deletions
21
package-lock.json
generated
21
package-lock.json
generated
|
|
@ -5627,6 +5627,7 @@
|
|||
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
|
||||
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"is-extendable": "^0.1.0"
|
||||
}
|
||||
|
|
@ -5671,7 +5672,8 @@
|
|||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"is-glob": {
|
||||
"version": "4.0.1",
|
||||
|
|
@ -9505,9 +9507,9 @@
|
|||
}
|
||||
},
|
||||
"https-proxy-agent": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz",
|
||||
"integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==",
|
||||
"version": "2.2.3",
|
||||
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.3.tgz",
|
||||
"integrity": "sha512-Ytgnz23gm2DVftnzqRRz2dOXZbGd2uiajSw/95bPp6v53zPRspQjLm/AfBgqbJ2qfeRXWIOMVLpp86+/5yX39Q==",
|
||||
"requires": {
|
||||
"agent-base": "^4.3.0",
|
||||
"debug": "^3.1.0"
|
||||
|
|
@ -14164,6 +14166,7 @@
|
|||
"redux": "4.0.4",
|
||||
"redux-action-buffer": "1.2.0",
|
||||
"redux-batched-actions": "0.4.1",
|
||||
"redux-offline": "git+https://github.com/enahum/redux-offline.git#885024de96b6ec73650c340c8928066585c413df",
|
||||
"redux-persist": "4.9.1",
|
||||
"redux-thunk": "2.3.0",
|
||||
"reselect": "4.0.0",
|
||||
|
|
@ -14171,6 +14174,11 @@
|
|||
"shallow-equals": "1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@react-native-community/netinfo": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-4.4.0.tgz",
|
||||
"integrity": "sha512-qqNWMOsrDjj/daqV21ID2T8mNUjZD4pdx3PuWyE65gzKh2w+oMnzKb+J0NbLyZPn3wwLwU1+Cpf58A0ff5szjQ=="
|
||||
},
|
||||
"form-data": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.0.tgz",
|
||||
|
|
@ -14199,9 +14207,10 @@
|
|||
}
|
||||
},
|
||||
"redux-offline": {
|
||||
"version": "git+https://github.com/enahum/redux-offline.git#4bd85e7e3b279a2b11fb4d587808d583d2b5e7b5",
|
||||
"from": "git+https://github.com/enahum/redux-offline.git#4bd85e7e3b279a2b11fb4d587808d583d2b5e7b5",
|
||||
"version": "git+https://github.com/enahum/redux-offline.git#885024de96b6ec73650c340c8928066585c413df",
|
||||
"from": "git+https://github.com/enahum/redux-offline.git#885024de96b6ec73650c340c8928066585c413df",
|
||||
"requires": {
|
||||
"@react-native-community/netinfo": "^4.1.3",
|
||||
"redux-persist": "^4.5.0"
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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
|
|||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue