【Android】パーミッションまわりの再確認
2018年11月から、AndroidアプリのターゲットAPIレベルを26以上…Android8.0以上にすることが必須条件になりました。*1
先日ようやく関わってきたアプリの対応が終わり、アップデートのリリースが完了しました。
…が、次のターゲットAPIレベル28以上…Android9.0以上の対応もしていかないといけないといけないわけで…。とりあえずちょっと見てみることにしました。
動作の変更点: すべてのアプリ | Android Developers
うーん…「プライバシーの変更点 > 通話履歴へのアクセス制限」を見ると、パーミッショングループが新しく追加になるみたいですね…。
実はAPIレベル23(Android6.0)以上のパーミッションまわり*2 の対応漏れがあってゴタゴタしたので、一度ちゃんと確認しておこうかなと思った次第です。
システム パーミッション | Android Developers
- NormalパーミッションとDangerousパーミッション、これ全然意識できてなかった
- Normalパーミッションは、マニフェスト定義だけで付与される
- Dangerousパーミッションについて、APIレベル23(Android6.0)以上は都度要求、APIレベル22(Android5.1)以下は、インストール・アップデート時要求
- すでにパーミッショングループが許可されている場合、そのグループに属するDangerousパーミッション要求は自動的に許可される
- APIレベル28(Android9.0)以上から、以下の3つのDangerousパーミッションはパーミッショングループがPHONEからCALL_LOG(通話履歴)に移動となる
- READ_CALL_LOG
- WRITE_CALL_LOG
- PROCESS_OUTGOING_CALLS
…というわけで、APIレベル28(Android9.0)以上からこうなるわけですね。
- PHONE
- READ_PHONE_STATE
- CALL_PHONE
- ADD_VOICEMAIL
- USE_SIP
- CALL_LOG
- READ_CALL_LOG
- WRITE_CALL_LOG
- PROCESS_OUTGOING_CALLS
Dangerousパーミッションが必要になる箇所、ちゃんと洗い出して適切に付与しないと、APIレベル28以上にする時も対応漏れそうだなあ…。
※この記事は、アウトプットネタ棚卸し Advent Calendar 2018 20日目の記事です。