diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 336b21ff6..b7d7b820b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,6 +17,8 @@ + + diff --git a/app/src/main/java/acr/browser/lightning/view/LightningChromeClient.java b/app/src/main/java/acr/browser/lightning/view/LightningChromeClient.java index d204c9444..c9dee32a4 100644 --- a/app/src/main/java/acr/browser/lightning/view/LightningChromeClient.java +++ b/app/src/main/java/acr/browser/lightning/view/LightningChromeClient.java @@ -30,6 +30,8 @@ import com.cliqz.browser.main.Messages; import com.cliqz.nove.Bus; +import java.util.ArrayList; +import java.util.List; import java.util.Locale; import javax.inject.Inject; @@ -94,6 +96,19 @@ public void onReceivedIcon(WebView view, Bitmap icon) { @Override public void onPermissionRequest(PermissionRequest request) { + List permissions = new ArrayList<>(); + for (String requestedPermission : request.getResources()) { + switch (requestedPermission) { + case "android.webkit.resource.VIDEO_CAPTURE": + permissions.add(Manifest.permission.CAMERA); + break; + case "android.webkit.resource.AUDIO_CAPTURE": + permissions.add(Manifest.permission.RECORD_AUDIO); + break; + default: + break; + } + } activity.runOnUiThread(() -> PermissionsManager.getInstance() .requestPermissionsIfNecessaryForResult(activity, new PermissionsResultAction() { @Override @@ -103,9 +118,10 @@ public void onGranted() { @Override public void onDenied(String permission) { - // no-op + Timber.i("The permission was denied by the user"); + request.deny(); } - }, Manifest.permission.CAMERA)); + }, permissions.toArray(new String[permissions.size()]))); } @Override