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
|
package com.aurora.store.view.ui.spoof
|
||||||
|
|
||||||
import android.Manifest
|
import android.net.Uri
|
||||||
import android.content.Intent
|
import android.os.Build
|
||||||
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.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.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
|
||||||
import com.aurora.store.databinding.ActivityGenericPagerBinding
|
import com.aurora.store.databinding.ActivityGenericPagerBinding
|
||||||
import com.aurora.store.util.PathUtil
|
|
||||||
import com.aurora.store.view.ui.commons.BaseActivity
|
import com.aurora.store.view.ui.commons.BaseActivity
|
||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
import com.google.android.material.tabs.TabLayoutMediator
|
import com.google.android.material.tabs.TabLayoutMediator
|
||||||
import nl.komponents.kovenant.task
|
import nl.komponents.kovenant.task
|
||||||
import nl.komponents.kovenant.ui.failUi
|
import nl.komponents.kovenant.ui.failUi
|
||||||
import nl.komponents.kovenant.ui.successUi
|
import nl.komponents.kovenant.ui.successUi
|
||||||
import java.io.FileOutputStream
|
|
||||||
|
|
||||||
class SpoofActivity : BaseActivity() {
|
class SpoofActivity : BaseActivity() {
|
||||||
|
|
||||||
private lateinit var B: ActivityGenericPagerBinding
|
private lateinit var B: ActivityGenericPagerBinding
|
||||||
|
|
||||||
private val startForStorageManagerResult =
|
private val startForDocument =
|
||||||
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
|
registerForActivityResult(ActivityResultContracts.CreateDocument("text/x-java-properties")) {
|
||||||
if (isRAndAbove() && Environment.isExternalStorageManager()) {
|
if (it != null) exportDeviceConfig(it) else toast(R.string.toast_export_failed)
|
||||||
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() {
|
||||||
@@ -96,25 +81,7 @@ class SpoofActivity : BaseActivity() {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
R.id.action_export -> {
|
R.id.action_export -> {
|
||||||
if (isRAndAbove()) {
|
startForDocument.launch("aurora_store_${Build.BRAND}_${Build.DEVICE}.properties")
|
||||||
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)
|
||||||
@@ -144,16 +111,11 @@ class SpoofActivity : BaseActivity() {
|
|||||||
}.attach()
|
}.attach()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun exportDeviceConfig() {
|
private fun exportDeviceConfig(uri: Uri) {
|
||||||
task {
|
task {
|
||||||
NativeDeviceInfoProvider(this)
|
NativeDeviceInfoProvider(this)
|
||||||
.getNativeDeviceProperties()
|
.getNativeDeviceProperties()
|
||||||
.store(
|
.store(contentResolver.openOutputStream(uri), "DEVICE_CONFIG")
|
||||||
FileOutputStream(
|
|
||||||
PathUtil.getExternalPath() + "/native-device.properties.export"
|
|
||||||
),
|
|
||||||
"DEVICE_CONFIG"
|
|
||||||
)
|
|
||||||
} successUi {
|
} successUi {
|
||||||
toast(R.string.toast_export_success)
|
toast(R.string.toast_export_success)
|
||||||
} failUi {
|
} failUi {
|
||||||
|
|||||||
Reference in New Issue
Block a user