SpoofActivity: Use CreateDocument contract for exporting properties
This lets us not request external storage manager permissions Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -19,49 +19,34 @@
|
||||
|
||||
package com.aurora.store.view.ui.spoof
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
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.isRAndAbove
|
||||
import com.aurora.extensions.toast
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.data.providers.NativeDeviceInfoProvider
|
||||
import com.aurora.store.databinding.ActivityGenericPagerBinding
|
||||
import com.aurora.store.util.PathUtil
|
||||
import com.aurora.store.view.ui.commons.BaseActivity
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
import nl.komponents.kovenant.task
|
||||
import nl.komponents.kovenant.ui.failUi
|
||||
import nl.komponents.kovenant.ui.successUi
|
||||
import java.io.FileOutputStream
|
||||
|
||||
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)
|
||||
private val startForDocument =
|
||||
registerForActivityResult(ActivityResultContracts.CreateDocument("text/x-java-properties")) {
|
||||
if (it != null) exportDeviceConfig(it) else toast(R.string.toast_export_failed)
|
||||
}
|
||||
|
||||
override fun onConnected() {
|
||||
@@ -96,25 +81,7 @@ class SpoofActivity : BaseActivity() {
|
||||
return true
|
||||
}
|
||||
R.id.action_export -> {
|
||||
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)
|
||||
}
|
||||
}
|
||||
startForDocument.launch("aurora_store_${Build.BRAND}_${Build.DEVICE}.properties")
|
||||
}
|
||||
}
|
||||
return super.onOptionsItemSelected(item)
|
||||
@@ -144,16 +111,11 @@ class SpoofActivity : BaseActivity() {
|
||||
}.attach()
|
||||
}
|
||||
|
||||
private fun exportDeviceConfig() {
|
||||
private fun exportDeviceConfig(uri: Uri) {
|
||||
task {
|
||||
NativeDeviceInfoProvider(this)
|
||||
.getNativeDeviceProperties()
|
||||
.store(
|
||||
FileOutputStream(
|
||||
PathUtil.getExternalPath() + "/native-device.properties.export"
|
||||
),
|
||||
"DEVICE_CONFIG"
|
||||
)
|
||||
.store(contentResolver.openOutputStream(uri), "DEVICE_CONFIG")
|
||||
} successUi {
|
||||
toast(R.string.toast_export_success)
|
||||
} failUi {
|
||||
|
||||
Reference in New Issue
Block a user