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

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

開放

#79 建立於 2025年1月29日

 (1 則留言) (0 個反應) (0 位負責人)Java (32 個分叉)auto 404
good first issuequestion

倉庫指標

星標
 (84 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

          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

貢獻者指南