@@ -5,7 +5,6 @@ import android.content.Context
5
5
import android.content.Intent
6
6
import android.content.IntentFilter
7
7
import android.content.pm.PackageInstaller
8
- import android.os.Parcel
9
8
import android.util.Log
10
9
import androidx.activity.compose.rememberLauncherForActivityResult
11
10
import androidx.activity.result.contract.ActivityResultContracts
@@ -56,9 +55,10 @@ data class Installer(
56
55
fun rememberPackageInstaller (files : List <DocumentFile >): Installer {
57
56
val context = LocalContext .current
58
57
val scope = rememberCoroutineScope()
59
- val permissionStarter = rememberLauncherForActivityResult(contract = ActivityResultContracts .StartActivityForResult ()) {
60
- Log .e(" InstallWithOptions" , " permission result ${Settings .gson.toJson(it)} " )
61
- }
58
+ val permissionStarter =
59
+ rememberLauncherForActivityResult(contract = ActivityResultContracts .StartActivityForResult ()) {
60
+ Log .e(" InstallWithOptions" , " permission result ${Settings .gson.toJson(it)} " )
61
+ }
62
62
63
63
var statuses by remember {
64
64
mutableStateOf<List <Pair <String , String >>>(listOf ())
@@ -82,7 +82,7 @@ fun rememberPackageInstaller(files: List<DocumentFile>): Installer {
82
82
override fun applyOptions (params : PackageInstaller .SessionParams ): PackageInstaller .SessionParams {
83
83
getMutableOptions().forEach { it.apply (params) }
84
84
85
- return PackageInstaller . SessionParams ( Parcel .obtain(). apply { params.writeToParcel( this , 0 ) })
85
+ return params
86
86
}
87
87
}
88
88
}
@@ -126,8 +126,8 @@ fun rememberPackageInstaller(files: List<DocumentFile>): Installer {
126
126
isInstalling = true
127
127
}
128
128
129
- try {
130
- scope.launch( Dispatchers . IO ) {
129
+ scope.launch( Dispatchers . IO ) {
130
+ try {
131
131
shellInterface?.install(
132
132
files.map {
133
133
context.contentResolver.openAssetFileDescriptor(
@@ -140,9 +140,12 @@ fun rememberPackageInstaller(files: List<DocumentFile>): Installer {
140
140
applier,
141
141
MutableOption .InstallerPackage .settingsKey.getValue(),
142
142
)
143
+ } catch (e: Exception ) {
144
+ statuses = files.map {
145
+ (it.name ? : it.uri.toString()) to (e.localizedMessage ? : e.message
146
+ ? : e.toString())
147
+ }
143
148
}
144
- } catch (e: Exception ) {
145
- statuses = files.map{ (it.name ? : it.uri.toString()) to (e.localizedMessage ? : e.message ? : e.toString()) }
146
149
}
147
150
}
148
151
0 commit comments