Detox icon indicating copy to clipboard operation
Detox copied to clipboard

setPermissions API for Android

Open raphkr opened this issue 8 years ago • 6 comments

With the device object how do I set the overlay permissions to true for android.

raphkr avatar Dec 28 '17 05:12 raphkr

You just have to install it since install use -g option ( https://github.com/wix/detox/blob/419d356506f0c1751072b8c44bfc663bece4a856/detox/src/devices/android/ADB.js#L51)

from adb

 install [-lrtsdg] PACKAGE
 install-multiple [-lrtsdpg] PACKAGE...
     push package(s) to the device and install them
     -l: forward lock application
     -r: replace existing application
     -t: allow test packages
     -s: install application on sdcard
     -d: allow version code downgrade (debuggable packages only)
     -p: partial application install (install-multiple only)
     -g: grant all runtime permissions

Crash-- avatar Jan 02 '18 08:01 Crash--

I do see a use case where a setPermissions API would be beneficial for testing, just like iOS, where you may want to test your UI behaves correctly if permission has been granted or denied.

LeoNatan avatar Jan 10 '18 09:01 LeoNatan

@raphkr Maybe you ran into this too? A fix will be in the next release for emulators running on API lvl 23 or lower. (API lvl 24 and above worked well before.)

simonracz avatar Jan 10 '18 10:01 simonracz

Hi I have noticed in detox by default all permissions are set to be true in android. Is this the true behaviour of detox

yogeshthanvi avatar Dec 17 '18 13:12 yogeshthanvi

Is any update on this issue? How can we setPermission to NO in Android device for example in launch() API we want to set {Camera: No}

Himani33 avatar Mar 09 '22 18:03 Himani33

For anyone looking for a workaround, currently I am using adb command to grant/revoke camera and other permissions.

Here is code I am using

export const grantAndroidCameraPermission = async (
  bundleIdentifier: string
) => {
  execSync(`adb shell pm grant ${bundleIdentifier} android.permission.CAMERA`);
};

And I run this as soon as launch the app

beforeEach(async () => {
  await launchApp();
  await grantAndroidCameraPermission("com.xyz.abc");
});

SarjuHansaliya avatar May 13 '24 09:05 SarjuHansaliya