Android 内蔵ストレージのルートディレクトリのパスを取得
Androidアプリで端末内のファイルにアクセスする為にのお話。
Unityで定義されているApplication.dataPathやStreamingAssetsフォルダを使用してもよいが、
”ユーザーに自分で用意したファイルをスマホに入れてもらう”という事を要求する場合わかりやすい階層のほうが良いかと思い方法を調べました。
あと固定値でも良いかと思ったのですが、端末かAndroidのバージョン依存なのかで変わっちゃうみたいなので。
("/storage/emulated/0/"とか"/sdcard0/"とか)
方法は下記の通り。
#if !UNITY_EDITOR && UNITY_ANDROID using (AndroidJavaClass env = new AndroidJavaClass("android.os.Environment")) { using (AndroidJavaObject storageDir = environment.CallStatic<AndroidJavaObject>("getExternalStorageDirectory")) { _StorageDir = storageDir.Call<string>("getCanonicalPath"); } } #endif
要はJavaのクラス・関数でそのようなものが用意されているので、それを使うだけです。