mirror of
https://github.com/awfixers-stuff/OwnDroid.git
synced 2026-03-23 11:05:59 +00:00
update InstallAppActivity
This commit is contained in:
@@ -7,10 +7,18 @@ import android.graphics.drawable.ColorDrawable
|
||||
import android.os.Bundle
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.LinearProgressIndicator
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
@@ -29,6 +37,7 @@ class InstallAppActivity: FragmentActivity() {
|
||||
val sharedPref = applicationContext.getSharedPreferences("data", Context.MODE_PRIVATE)
|
||||
window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
|
||||
setContent {
|
||||
var installing by remember { mutableStateOf(false) }
|
||||
OwnDroidTheme(
|
||||
sharedPref.getBoolean("material_you", true),
|
||||
sharedPref.getBoolean("black_theme", false)
|
||||
@@ -40,12 +49,18 @@ class InstallAppActivity: FragmentActivity() {
|
||||
onDismissRequest = {
|
||||
finish()
|
||||
},
|
||||
text = {
|
||||
AnimatedVisibility(installing) {
|
||||
LinearProgressIndicator(modifier = Modifier.fillMaxWidth())
|
||||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(onClick = { finish() }) { Text(stringResource(R.string.cancel)) }
|
||||
},
|
||||
confirmButton = {
|
||||
TextButton(
|
||||
onClick = {
|
||||
installing = true
|
||||
uriToStream(applicationContext, this.intent.data) { stream -> installPackage(applicationContext, stream) }
|
||||
}
|
||||
) {
|
||||
@@ -55,6 +70,10 @@ class InstallAppActivity: FragmentActivity() {
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
)
|
||||
}
|
||||
val installDone by installAppDone.collectAsState()
|
||||
LaunchedEffect(installDone) {
|
||||
if(installDone) finish()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import android.widget.Toast
|
||||
import androidx.activity.ComponentActivity
|
||||
import com.bintianqi.owndroid.dpm.isDeviceOwner
|
||||
import com.bintianqi.owndroid.dpm.isProfileOwner
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
|
||||
class Receiver : DeviceAdminReceiver() {
|
||||
override fun onEnabled(context: Context, intent: Intent) {
|
||||
@@ -35,6 +36,8 @@ class Receiver : DeviceAdminReceiver() {
|
||||
|
||||
}
|
||||
|
||||
val installAppDone = MutableStateFlow(false)
|
||||
|
||||
class PackageInstallerReceiver:BroadcastReceiver(){
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
val toastText = when(intent.getIntExtra(EXTRA_STATUS, 999)){
|
||||
@@ -48,10 +51,13 @@ class PackageInstallerReceiver:BroadcastReceiver(){
|
||||
STATUS_FAILURE_STORAGE -> R.string.status_fail_storage
|
||||
STATUS_FAILURE_INCOMPATIBLE -> R.string.status_fail_incompatible
|
||||
STATUS_FAILURE_TIMEOUT -> R.string.status_fail_timeout
|
||||
else->R.string.unknown
|
||||
else -> 999
|
||||
}
|
||||
Log.e("OwnDroid", intent.getIntExtra(EXTRA_STATUS, 999).toString())
|
||||
installAppDone.value = true
|
||||
if(toastText != 999){
|
||||
val text = context.getString(R.string.app_installer_status) + context.getString(toastText)
|
||||
if(toastText!=999){Toast.makeText(context, text, Toast.LENGTH_SHORT).show()}
|
||||
Toast.makeText(context, text, Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,6 +78,7 @@ import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.bintianqi.owndroid.InstallAppActivity
|
||||
import com.bintianqi.owndroid.PackageInstallerReceiver
|
||||
import com.bintianqi.owndroid.R
|
||||
import com.bintianqi.owndroid.Receiver
|
||||
@@ -90,7 +91,6 @@ import com.bintianqi.owndroid.ui.RadioButtonItem
|
||||
import com.bintianqi.owndroid.ui.SubPageItem
|
||||
import com.bintianqi.owndroid.ui.SwitchItem
|
||||
import com.bintianqi.owndroid.ui.TopBar
|
||||
import com.bintianqi.owndroid.uriToStream
|
||||
import java.util.concurrent.Executors
|
||||
|
||||
private var dialogConfirmButtonAction = {}
|
||||
@@ -949,7 +949,11 @@ private fun InstallApp() {
|
||||
Spacer(Modifier.padding(vertical = 3.dp))
|
||||
Column(modifier = Modifier.fillMaxWidth()) {
|
||||
Button(
|
||||
onClick = { uriToStream(context, fileUriFlow.value) { stream -> installPackage(context,stream)} },
|
||||
onClick = {
|
||||
val intent = Intent(context, InstallAppActivity::class.java)
|
||||
intent.data = fileUriFlow.value
|
||||
context.startActivity(intent)
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Text(stringResource(R.string.silent_install))
|
||||
|
||||
Reference in New Issue
Block a user