パーミッション
また変更されてんのか...
manifest.xmlに次の宣言を入れる。レガシーのパーミッションを有効にする。
preserveLegacyExternalStorage
preserveLegacyExternalStorage フラグを使用して以前のストレージ モデルを保持し、ユーザーが Android 11 をターゲットとするアプリの新しいバージョンにアップグレードする際に、ユーザーのデータを移行できるようにします。
データ移行関係、まぎわらしい。
Androidのファイルアクセスの混乱
俺もそう思う、このへん決めてるやつアホなのか。過去のしがらみでせざるを得ないのか...
Android 11から変更される模様。
https://developer.android.com/preview/privacy/storage#all-files-access
-Android 4.4 SDCARDへの書き込みが禁止
-Android 5.0 SDCARDへの書き込みはStorage Access Frameworkで行えるようになった(READはJava File APIで可能)
-Android 10 内部ストレージと外部ストレージの両方でアプリ固有ディレクトリー以外はJava File APIによるアクセス不可となった。Storage Access Frameworkを使用すれば全てのファイルにアクセス可能。
-Android 11 アプリ固有ディレクトリー以外のファイルアクセスはMANAGE_EXTERNAL_STORAGE 権限を許可することでJava File APIで可能になる模様。(ACTION_OPEN_DOCUMENT_TREEでは外部ストレージと内部ストレージのルートが指定できなくなった)Scoped Storage対応でアプリをSAFに書き換えたのだが、 Android11では無駄になった模様!!何をしたいのか不明で、混乱させているようにしか思えない!!
参考
Android 10 デバイスで稼働するアプリが対象範囲別ストレージを無効にする場合、アプリのマニフェスト ファイルで引き続き requestLegacyExternalStorage を true に設定することが推奨されます。それにより、Android 10 を搭載するデバイスで引き続きアプリが想定どおりに動作できます。
Android11 - Storage(ストレージ)の変更まとめ
Quest2はAndroid10
Pixel5はAndroid11