From a0f13e604004c56931efdb3f6485421fb5eed072 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Thu, 1 Jun 2023 23:21:45 +0800 Subject: [PATCH] SpoofActivity: Use CreateDocument contract for exporting properties This lets us not request external storage manager permissions Signed-off-by: Aayush Gupta --- .../store/view/ui/spoof/SpoofActivity.kt | 54 +++---------------- 1 file changed, 8 insertions(+), 46 deletions(-) diff --git a/app/src/main/java/com/aurora/store/view/ui/spoof/SpoofActivity.kt b/app/src/main/java/com/aurora/store/view/ui/spoof/SpoofActivity.kt index d652aca65..b8599ddea 100644 --- a/app/src/main/java/com/aurora/store/view/ui/spoof/SpoofActivity.kt +++ b/app/src/main/java/com/aurora/store/view/ui/spoof/SpoofActivity.kt @@ -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 {