mirror of
https://github.com/revanced/revanced-manager-compose
synced 2024-06-03 03:46:21 +02:00
27 lines
1.3 KiB
Kotlin
27 lines
1.3 KiB
Kotlin
package app.revanced.manager.data.platform
|
|
|
|
import android.app.Application
|
|
import android.os.Build
|
|
import android.os.Environment
|
|
import android.Manifest
|
|
import android.content.pm.PackageManager
|
|
import androidx.activity.result.contract.ActivityResultContract
|
|
import androidx.activity.result.contract.ActivityResultContracts
|
|
import app.revanced.manager.util.RequestManageStorageContract
|
|
|
|
class FileSystem(private val app: Application) {
|
|
val contentResolver = app.contentResolver // TODO: move Content Resolver operations to here.
|
|
|
|
fun externalFilesDir() = Environment.getExternalStorageDirectory().toPath()
|
|
|
|
private fun usesManagePermission() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
|
|
|
|
private val storagePermissionName = if (usesManagePermission()) Manifest.permission.MANAGE_EXTERNAL_STORAGE else Manifest.permission.READ_EXTERNAL_STORAGE
|
|
|
|
fun permissionContract(): Pair<ActivityResultContract<String, Boolean>, String> {
|
|
val contract = if (usesManagePermission()) RequestManageStorageContract() else ActivityResultContracts.RequestPermission()
|
|
return contract to storagePermissionName
|
|
}
|
|
|
|
fun hasStoragePermission() = if (usesManagePermission()) Environment.isExternalStorageManager() else app.checkSelfPermission(storagePermissionName) == PackageManager.PERMISSION_GRANTED
|
|
} |