mirror of https://github.com/NekoX-Dev/NekoX.git
84 lines
2.2 KiB
Kotlin
84 lines
2.2 KiB
Kotlin
package tw.nekomimi.nekogram.utils
|
|
|
|
import android.content.Context
|
|
import android.os.Environment
|
|
import android.os.storage.StorageManager
|
|
import org.telegram.messenger.ApplicationLoader
|
|
import org.telegram.messenger.FileLog
|
|
import tw.nekomimi.nekogram.NekoConfig
|
|
import java.io.File
|
|
import java.util.*
|
|
|
|
object EnvUtil {
|
|
|
|
@JvmStatic
|
|
@Suppress("UNCHECKED_CAST")
|
|
val rootDirectories by lazy {
|
|
|
|
val mStorageManager = ApplicationLoader.applicationContext.getSystemService(Context.STORAGE_SERVICE) as StorageManager
|
|
|
|
(mStorageManager.javaClass.getMethod("getVolumePaths").invoke(mStorageManager) as Array<String>).map { File(it) }
|
|
|
|
}
|
|
|
|
@JvmStatic
|
|
val availableDirectories
|
|
get() = LinkedList<File>().apply {
|
|
|
|
add(File(ApplicationLoader.getDataDirFixed(), "files/media"))
|
|
add(File(ApplicationLoader.getDataDirFixed(), "cache/media"))
|
|
|
|
rootDirectories.forEach {
|
|
|
|
add(File(it, "Android/data/" + ApplicationLoader.applicationContext.packageName + "/files"))
|
|
add(File(it, "Android/data/" + ApplicationLoader.applicationContext.packageName + "/cache"))
|
|
|
|
}
|
|
|
|
add(Environment.getExternalStoragePublicDirectory("NekoX"))
|
|
|
|
}.map { it.path }.toTypedArray()
|
|
|
|
@JvmStatic
|
|
fun getTelegramPath(): File {
|
|
|
|
if (NekoConfig.cachePath == null) {
|
|
|
|
NekoConfig.setCachePath(ApplicationLoader.applicationContext.getExternalFilesDir(null)!!.path)
|
|
|
|
}
|
|
|
|
var telegramPath = File(NekoConfig.cachePath)
|
|
|
|
if (telegramPath.isDirectory || telegramPath.mkdirs()) {
|
|
|
|
return telegramPath
|
|
|
|
}
|
|
|
|
telegramPath = ApplicationLoader.applicationContext.getExternalFilesDir(null) ?: File(ApplicationLoader.getDataDirFixed(), "cache/files")
|
|
|
|
if (telegramPath.isDirectory || telegramPath.mkdirs()) {
|
|
|
|
return telegramPath
|
|
|
|
}
|
|
|
|
telegramPath = File(ApplicationLoader.getDataDirFixed(), "cache/files")
|
|
|
|
if (!telegramPath.isDirectory) telegramPath.mkdirs();
|
|
|
|
return telegramPath;
|
|
|
|
}
|
|
|
|
@JvmStatic
|
|
fun doTest() {
|
|
|
|
FileLog.d("rootDirectories: ${rootDirectories.size}")
|
|
|
|
rootDirectories.forEach { FileLog.d(it.path) }
|
|
|
|
}
|
|
|
|
} |