Android 10 でデバイス ID の権限が変更された件
すべてのデバイス ID が 、READ_PRIVILEGED_PHONE_STATE という権限によって保護される事に。
この権限は、サードパーティーアプリには付与することができましぇん。(怒)
制限を受けるメソッド
以下、公式。
https://developer.android.com/about/versions/10/privacy/changes?hl=ja#non-resettable-device-ids
制限されるのは以下のメソッド。
Buildクラス
getSerial()
TelephonyManagerクラス
getImei()
getDeviceId()
getMeid()
getSimSerialNumber()
getSubscriberId()
READ_PRIVILEGED_PHONE_STATE権限ってどうやって与えるのさ
リクエストパーミッションなどの通常の権限付与ではなく、
端末に存在する設定ファイルの該当アプリ箇所に、直接許可を記載する必要がある。
以下の記事が参考になった。
https://qiita.com/hiesiea/items/6a2deb479958a3b44707#read_privileged_phone_state%E3%82%92%E3%83%9B%E3%83%AF%E3%82%A4%E3%83%88%E3%83%AA%E3%82%B9%E3%83%88%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B
ただしこの権限を付与できるのは、
プリインストールアプリや、携帯キャリアが配信するアプリに限る。
###結論
普通にPlayストアに出すようなアプリは、
デバイスに紐づけられているIDを取得できなくなった。
(端末にプリインストールされているアプリや、
携帯キャリアが提供するアプリはできる)
感想
対象範囲別ストレージによる直パスアクセスの禁止といい、
API29からは、端末内へのアクセスをどんどん制限してますね。
(やりすぎてAPI30で緩和されるのですが…)
####参考
https://source.android.com/devices/tech/config/device-identifiers