-
Notifications
You must be signed in to change notification settings - Fork 24.9k
Description
Is this a bug report?
Yes
Have you read the Contributing Guidelines?
Yes.
Environment
Environment:
OS: macOS Sierra 10.12.6
Node: 9.4.0
Yarn: 1.3.2
npm: 5.6.0
Watchman: 4.9.0
Xcode: Xcode 9.2 Build version 9C40b
Android Studio: 3.0 AI-171.4443003
Packages: (wanted => installed)
react: 16.2.0 => 16.2.0
react-native: 0.53.0 => 0.53.0
Edit: according to @MateRyze, it still happens on react-native 0.55.4.
Target Platform: Android 6.0.1
Steps to Reproduce
We have a Camera component and it should check for the Camera permission before mounting.
In my app's AndroidManifest.xml I have the line, along with many other permissions:
<uses-permission android:name="android.permission.CAMERA"/>
In our component's componentDidMount()
we call a function that should return true
if we have permission and false
if we do not have, here is the relevant snippet of the function:
if (Platform.OS === 'android') {
const isGranted = await PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.CAMERA);
if (isGranted) {
return true;
}
try {
console.log('before request');
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.CAMERA,
{
title: 'Dialog Title',
message: 'Dialog Message',
}
);
console.log('after request');
return granted === PermissionsAndroid.RESULTS.GRANTED;
} catch (err) {
console.log('error');
console.log(err);
}
}
Expected Behavior
A dialog with my title and message should appear, if the user clicks on "Allow", the promise should resolve and my component should render as expected.
Actual Behavior
A dialog with a different message and title appears. I click on "Allow" and the promise is never resolved or rejected.
In my logs, only the "before request" log appears. Neitherconsole.log('after request')
or console.log('error')
is logged, so I presume the code is stuck in the await.
I am following this doc.