mirror of
https://github.com/awfixers-stuff/OwnDroid.git
synced 2026-03-23 19:15:58 +00:00
Optimize code
This commit is contained in:
@@ -5,18 +5,13 @@ import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
import android.content.ComponentName
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.widget.Toast
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.annotation.StringRes
|
||||
import com.bintianqi.owndroid.dpm.addDeviceAdmin
|
||||
import com.bintianqi.owndroid.dpm.createManagedProfile
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import java.io.File
|
||||
import java.io.FileNotFoundException
|
||||
import java.io.IOException
|
||||
import java.io.InputStream
|
||||
@@ -27,29 +22,20 @@ import java.time.format.DateTimeFormatter
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
|
||||
lateinit var getFile: ActivityResultLauncher<Intent>
|
||||
val fileUriFlow = MutableStateFlow(Uri.parse(""))
|
||||
|
||||
var zhCN = true
|
||||
|
||||
fun uriToStream(
|
||||
context: Context,
|
||||
uri: Uri?,
|
||||
uri: Uri,
|
||||
operation: (stream: InputStream)->Unit
|
||||
){
|
||||
if(uri!=null){
|
||||
try {
|
||||
val stream = context.contentResolver.openInputStream(uri)
|
||||
if(stream != null) { operation(stream) }
|
||||
stream?.close()
|
||||
}
|
||||
catch(_: FileNotFoundException) { Toast.makeText(context, R.string.file_not_exist, Toast.LENGTH_SHORT).show() }
|
||||
catch(_: IOException) { Toast.makeText(context, R.string.io_exception, Toast.LENGTH_SHORT).show() }
|
||||
try {
|
||||
val stream = context.contentResolver.openInputStream(uri)
|
||||
if(stream != null) { operation(stream) }
|
||||
stream?.close()
|
||||
}
|
||||
}
|
||||
|
||||
fun MutableList<Int>.toggle(status: Boolean, element: Int) {
|
||||
if(status) add(element) else remove(element)
|
||||
catch(_: FileNotFoundException) { Toast.makeText(context, R.string.file_not_exist, Toast.LENGTH_SHORT).show() }
|
||||
catch(_: IOException) { Toast.makeText(context, R.string.io_exception, Toast.LENGTH_SHORT).show() }
|
||||
}
|
||||
|
||||
fun writeClipBoard(context: Context, string: String):Boolean{
|
||||
@@ -62,40 +48,13 @@ fun writeClipBoard(context: Context, string: String):Boolean{
|
||||
return true
|
||||
}
|
||||
|
||||
lateinit var exportFile: ActivityResultLauncher<Intent>
|
||||
var exportFilePath: String? = null
|
||||
var isExportingSecurityOrNetworkLogs = false
|
||||
|
||||
fun registerActivityResult(context: ComponentActivity){
|
||||
getFile = context.registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { activityResult ->
|
||||
activityResult.data.let {
|
||||
if(it != null) fileUriFlow.value = it.data
|
||||
}
|
||||
}
|
||||
createManagedProfile = context.registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {}
|
||||
fun registerActivityResult(context: ComponentActivity) {
|
||||
addDeviceAdmin = context.registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
|
||||
val dpm = context.applicationContext.getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
if(dpm.isAdminActive(ComponentName(context.applicationContext, Receiver::class.java))) {
|
||||
backToHomeStateFlow.value = true
|
||||
}
|
||||
}
|
||||
exportFile = context.registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
|
||||
val intentData = result.data ?: return@registerForActivityResult
|
||||
val uriData = intentData.data ?: return@registerForActivityResult
|
||||
val path = exportFilePath ?: return@registerForActivityResult
|
||||
context.contentResolver.openOutputStream(uriData).use { outStream ->
|
||||
if(outStream != null) {
|
||||
if(isExportingSecurityOrNetworkLogs) outStream.write("[".encodeToByteArray())
|
||||
File(path).inputStream().use { inStream ->
|
||||
inStream.copyTo(outStream)
|
||||
}
|
||||
if(isExportingSecurityOrNetworkLogs) outStream.write("]".encodeToByteArray())
|
||||
Toast.makeText(context.applicationContext, R.string.success, Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
isExportingSecurityOrNetworkLogs = false
|
||||
exportFilePath = null
|
||||
}
|
||||
}
|
||||
|
||||
fun formatFileSize(bytes: Long): String {
|
||||
|
||||
Reference in New Issue
Block a user