Skip to content

Commit f4acd71

Browse files
committed
feat: improve APK file information retrieval
1 parent 4cfb513 commit f4acd71

File tree

1 file changed

+75
-95
lines changed
  • app/src/main/java/com/raival/compose/file/explorer/screen/main/tab/files/compose

1 file changed

+75
-95
lines changed

app/src/main/java/com/raival/compose/file/explorer/screen/main/tab/files/compose/ApkPreviewDialog.kt

Lines changed: 75 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -51,58 +51,51 @@ fun ApkPreviewDialog(tab: FilesTab) {
5151
val isApksArchive: Boolean = apkDialog.ApksArchive
5252

5353
if (tab.apkDialog.showApkDialog && apkDialog.apkFile != null) {
54-
val packageManager = globalClass.packageManager
5554
val context = LocalContext.current
5655
val apkFile = apkDialog.apkFile!!
5756

58-
val apkInfo by remember {
59-
mutableStateOf(packageManager.getPackageArchiveInfo(apkFile.path, 0))
60-
}
61-
62-
var icon by remember {
63-
mutableStateOf<Drawable?>(null)
64-
}
65-
66-
val details = remember {
67-
mutableStateListOf<Pair<String, String>>()
68-
}
69-
70-
var appName by remember {
71-
mutableStateOf(emptyString)
72-
}
57+
var icon by remember { mutableStateOf<Drawable?>(null) }
58+
val details = remember { mutableStateListOf<Pair<String, String>>() }
59+
var appName by remember { mutableStateOf(emptyString) }
7360

7461
val doSign = PreferencesManager.GeneralPrefs.signApk
7562

76-
LaunchedEffect(Unit) {
77-
apkInfo?.let { it ->
78-
it.applicationInfo?.sourceDir = apkFile.path
79-
it.applicationInfo?.publicSourceDir = apkFile.path
63+
if (!isApksArchive) {
64+
val packageManager = globalClass.packageManager
65+
val apkInfo =
66+
remember { mutableStateOf(packageManager.getPackageArchiveInfo(apkFile.path, 0)) }
8067

81-
icon = it.applicationInfo?.loadIcon(packageManager)
82-
appName = it.applicationInfo?.loadLabel(packageManager).toString()
68+
LaunchedEffect(Unit) {
69+
apkInfo.value?.let { info ->
70+
info.applicationInfo?.sourceDir = apkFile.path
71+
info.applicationInfo?.publicSourceDir = apkFile.path
8372

84-
details.add(Pair(globalClass.getString(R.string.package_name), it.packageName))
85-
it.versionName?.let {
86-
details.add(Pair(globalClass.getString(R.string.version_name), it))
87-
}
88-
details.add(
89-
Pair(
90-
globalClass.getString(R.string.version_code),
91-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) it.longVersionCode.toString() else it.versionCode.toString()
73+
icon = info.applicationInfo?.loadIcon(packageManager)
74+
appName = info.applicationInfo?.loadLabel(packageManager).toString()
75+
76+
details.add(
77+
Pair(
78+
globalClass.getString(R.string.package_name),
79+
info.packageName
80+
)
9281
)
93-
)
94-
details.add(
95-
Pair(
96-
globalClass.getString(R.string.size),
97-
apkFile.fileSize.toFormattedSize()
82+
info.versionName?.let {
83+
details.add(Pair(globalClass.getString(R.string.version_name), it))
84+
}
85+
details.add(
86+
Pair(
87+
globalClass.getString(R.string.version_code),
88+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) info.longVersionCode.toString() else info.versionCode.toString()
89+
)
9890
)
99-
)
91+
}
10092
}
10193
}
94+
details.add(
95+
Pair(globalClass.getString(R.string.size), apkFile.fileSize.toFormattedSize())
96+
)
10297

103-
BottomSheetDialog(
104-
onDismissRequest = { apkDialog.hide() }
105-
) {
98+
BottomSheetDialog(onDismissRequest = { apkDialog.hide() }) {
10699
Column(
107100
modifier = Modifier
108101
.fillMaxWidth()
@@ -130,11 +123,7 @@ fun ApkPreviewDialog(tab: FilesTab) {
130123
modifier = Modifier.fillMaxWidth(),
131124
horizontalArrangement = Arrangement.Center
132125
) {
133-
Text(
134-
text = appName,
135-
fontSize = 18.sp,
136-
fontWeight = FontWeight.Bold
137-
)
126+
Text(text = appName, fontSize = 18.sp, fontWeight = FontWeight.Bold)
138127
}
139128

140129
Space(size = 8.dp)
@@ -156,64 +145,55 @@ fun ApkPreviewDialog(tab: FilesTab) {
156145
Space(size = 8.dp)
157146

158147
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.End) {
159-
TextButton(
160-
onClick = {
161-
apkDialog.hide()
162-
apkFile.openFile(
163-
context = context,
164-
anonymous = false,
165-
skipSupportedExtensions = true,
166-
customMimeType = "application/zip"
167-
)
168-
}
169-
) {
148+
TextButton(onClick = {
149+
apkDialog.hide()
150+
apkFile.openFile(
151+
context = context,
152+
anonymous = false,
153+
skipSupportedExtensions = true,
154+
customMimeType = "application/zip"
155+
)
156+
}) {
170157
Text(text = stringResource(R.string.explore))
171158
}
172159

173160
if (isApksArchive) {
174-
TextButton(
175-
onClick = {
176-
apkDialog.hide()
177-
val mergeHandler = MergeHandler(context)
178-
mergeHandler.mergeApks(
179-
tab,
180-
apkFile,
181-
doSign,
182-
onSuccess = {
183-
CoroutineScope(Dispatchers.Main).launch {
184-
tab.taskDialog.taskDialogInfo =
185-
context.getString(R.string.merge_successful)
186-
tab.taskDialog.taskDialogSubtitle =
187-
context.getString(R.string.merge_completed)
188-
tab.taskDialog.taskDialogProgress = 1f
189-
delay(500)
190-
tab.taskDialog.showTaskDialog = false
191-
}
192-
},
193-
onError = { errorMessage ->
194-
CoroutineScope(Dispatchers.Main).launch {
195-
tab.taskDialog.taskDialogInfo = errorMessage
196-
tab.taskDialog.taskDialogSubtitle =
197-
context.getString(R.string.failed)
198-
}
161+
TextButton(onClick = {
162+
apkDialog.hide()
163+
val mergeHandler = MergeHandler(context)
164+
mergeHandler.mergeApks(
165+
tab, apkFile, doSign,
166+
onSuccess = {
167+
CoroutineScope(Dispatchers.Main).launch {
168+
tab.taskDialog.taskDialogInfo =
169+
context.getString(R.string.merge_successful)
170+
tab.taskDialog.taskDialogSubtitle =
171+
context.getString(R.string.merge_completed)
172+
tab.taskDialog.taskDialogProgress = 1f
173+
delay(500)
174+
tab.taskDialog.showTaskDialog = false
199175
}
200-
)
201-
202-
}
203-
) {
176+
},
177+
onError = { errorMessage ->
178+
CoroutineScope(Dispatchers.Main).launch {
179+
tab.taskDialog.taskDialogInfo = errorMessage
180+
tab.taskDialog.taskDialogSubtitle =
181+
context.getString(R.string.failed)
182+
}
183+
}
184+
)
185+
}) {
204186
Text(text = stringResource(R.string.merge))
205187
}
206-
} else{
207-
TextButton(
208-
onClick = {
209-
apkDialog.hide()
210-
apkFile.openFile(
211-
context = context,
212-
anonymous = false,
213-
skipSupportedExtensions = true
214-
)
215-
}
216-
) {
188+
} else {
189+
TextButton(onClick = {
190+
apkDialog.hide()
191+
apkFile.openFile(
192+
context,
193+
anonymous = false,
194+
skipSupportedExtensions = true
195+
)
196+
}) {
217197
Text(text = stringResource(R.string.install))
218198
}
219199
}

0 commit comments

Comments
 (0)