maniac-tech/react-native-expo-read-sms

`status === PermissionAndroid.RESULTS.GRANTED` would be checking text against an object.

Open

#79 opened on Jan 29, 2025

View on GitHub
 (1 comment) (0 reactions) (0 assignees)Java (32 forks)auto 404
good first issuequestion

Repository metrics

Stars
 (84 stars)
PR merge metrics
 (PR metrics pending)

Description

from what I have seen, status in this case would return

{
  "android.permission.RECEIVE_SMS": "granted",
  "android.permission.READ_SMS": "denied"
}

so status === PermissionAndroid.RESULTS.GRANTED would be checking text against an object.

this can be rewritten as:

const status = await PermissionsAndroid.requestMultiple([
  PermissionsAndroid.PERMISSIONS.RECEIVE_SMS,
  PermissionsAndroid.PERMISSIONS.READ_SMS,
]);

const granted = PermissionsAndroid.RESULTS.GRANTED;
const denied = PermissionsAndroid.RESULTS.DENIED;
const neverAskAgain = PermissionsAndroid.RESULTS.NEVER_ASK_AGAIN;

if (status[PermissionsAndroid.PERMISSIONS.RECEIVE_SMS] === granted &&
    status[PermissionsAndroid.PERMISSIONS.READ_SMS] === granted) {
  return true;
}

if ([status[PermissionsAndroid.PERMISSIONS.RECEIVE_SMS], status[PermissionsAndroid.PERMISSIONS.READ_SMS]].includes(denied)) {
  console.log("Read/Receive SMS permission denied by user.", status);
} else if ([status[PermissionsAndroid.PERMISSIONS.RECEIVE_SMS], status[PermissionsAndroid.PERMISSIONS.READ_SMS]].includes(neverAskAgain)) {
  console.log("Read/Receive SMS permission revoked by user.", status);
}

Originally posted by @alokpant in https://github.com/maniac-tech/react-native-expo-read-sms/pull/76#discussion_r1863434353

Contributor guide