Androidの権限チェック周りのハンドリング
- React NativeでAndroidの権限周りについて整理したもの
権限チェックの方法
- 用途に応じて
PermissionsAndroid.check()
かPermissionsAndroid.request()
を使う
PermissionsAndroid.check()
- 権限があるかどうかtrue/falseで返してくれる
- https://facebook.github.io/react-native/docs/permissionsandroid#check
const isAuthorized = await PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.CAMERA);
console.log(isAuthorized); // true/false
PermissionsAndroid.request()
- 権限が付与されていない場合は許可するかどうか選択するプロンプトを出してくれる
- Android sdkのバージョンが23未満の場合はインストール時に権限付与されているため常に許可状態となる
- https://facebook.github.io/react-native/docs/permissionsandroid#request
- ユーザの選択パターンは3種類
- 許可
- 許可しない
- 許可しない(今後表示しないにチェック)
const granted = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.CAMERA);
console.log(granted); // true/'granted'/'denied'/'never_ask_again'
requestの戻り値の整理
# | 初期状態 | 権限チェックプロンプトの表示 | プロンプト選択内容 | 結果 | request()の戻り値 |
---|---|---|---|---|---|
① | sdk23未満(②以降は23以上) | なし | - | 利用可 | true |
② | 権限あり | なし | - | 利用可 | granted |
③ | 権限なし | あり | 許可 | 利用可 | granted |
④ | 権限なし | あり | 許可しない | 利用不可 | denied |
⑤ | 権限なし | あり | 許可しない(今後表示しないにチェック) | 利用不可 | never_ask_again |
⑥ | 権限なし(今後表示しないチェック済み) | なし | - | 利用不可 | never_ask_again |