androidアプリでカメラ機能の実装をするときに、bitmap加工やexifの修正の
ために撮った写真のディレクトリを取ってくる必要があるのですが
今まではEnvironment.getExternalStorageDirectoryで指定することに
よって簡単に写真のディレクトリを見つけることができたのですが、
api29からはユーザーのプライバシーを外部から悪用されないように
と厳しく取り締まった結果このメソッドが非推奨になり
開発者さんたちは泣く泣く変更を余儀なくされました。
ですが同じことができなくなったという訳ではなく、代わりに
getExternalFilesDirを使うことで今までと同じように
ディレクトリを指定することができます。
他にMediaStoreを使ってファイルを作る方法もあるのですが、
getExternalFilesDirのほうが短いコーディングで済ませられるので
こっちのほうが好みですね。
改めてapi29以降で共有ファイルを取得するには以下のように書く
ことで取得できるようになります。
</pre> <pre>File imageStorageDir = new File( getExternalFilesDir(Environment.DIRECTORY_DCIM), "child" );</pre> <pre>
※DCIMとはandroidが持っている外部ストレージの一部なのですが、sdと
違い切り離すことができません。
なので何もマウントしていない状態で画像を保存する場合は
基本このDCIMに保存されます。