SpoofActivity: Ensure permission and directories exist before exporting device config

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-05-19 10:44:24 +05:30
parent 40eae4da75
commit eaa82f5e8b
2 changed files with 44 additions and 3 deletions

View File

@@ -63,7 +63,10 @@ object PathUtil {
}
fun getExternalPath(): String {
return Environment.getExternalStorageDirectory().toString() + "/Aurora/Store"
val auroraDir =
java.io.File("${Environment.getExternalStorageDirectory().absolutePath}/Aurora/Store")
auroraDir.mkdirs()
return auroraDir.absolutePath
}
fun getBaseCopyDirectory(): String {

View File

@@ -19,14 +19,21 @@
package com.aurora.store.view.ui.spoof
import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Bundle
import android.os.Environment
import android.provider.Settings
import android.view.Menu
import android.view.MenuItem
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.Lifecycle
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.aurora.extensions.close
import com.aurora.extensions.isRAndAbove
import com.aurora.extensions.toast
import com.aurora.store.R
import com.aurora.store.data.providers.NativeDeviceInfoProvider
@@ -44,6 +51,19 @@ class SpoofActivity : BaseActivity() {
private lateinit var B: ActivityGenericPagerBinding
private val startForStorageManagerResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if (isRAndAbove() && Environment.isExternalStorageManager()) {
exportDeviceConfig()
} else {
toast(R.string.permissions_denied)
}
}
private val startForPermissions =
registerForActivityResult(ActivityResultContracts.RequestPermission()) {
if (it) exportDeviceConfig() else toast(R.string.permissions_denied)
}
override fun onConnected() {
}
@@ -76,7 +96,25 @@ class SpoofActivity : BaseActivity() {
return true
}
R.id.action_export -> {
exportDeviceConfig()
if (isRAndAbove()) {
if (Environment.isExternalStorageManager()) {
exportDeviceConfig()
} else {
startForStorageManagerResult.launch(
Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)
)
}
} else {
if (ContextCompat.checkSelfPermission(
this,
Manifest.permission.WRITE_EXTERNAL_STORAGE
) == PackageManager.PERMISSION_GRANTED
) {
exportDeviceConfig()
} else {
startForPermissions.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE)
}
}
}
}
return super.onOptionsItemSelected(item)