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 { 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 { fun getBaseCopyDirectory(): String {

View File

@@ -19,14 +19,21 @@
package com.aurora.store.view.ui.spoof 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.Bundle
import android.os.Environment
import android.provider.Settings
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.adapter.FragmentStateAdapter
import com.aurora.extensions.close import com.aurora.extensions.isRAndAbove
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.providers.NativeDeviceInfoProvider import com.aurora.store.data.providers.NativeDeviceInfoProvider
@@ -44,6 +51,19 @@ class SpoofActivity : BaseActivity() {
private lateinit var B: ActivityGenericPagerBinding 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() { override fun onConnected() {
} }
@@ -76,7 +96,25 @@ class SpoofActivity : BaseActivity() {
return true return true
} }
R.id.action_export -> { 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) return super.onOptionsItemSelected(item)