@@ -60,6 +60,11 @@ class ParamsAppChooserRender(
6060 private fun openAppChooser () {
6161 // 🔥 preload app đã chọn → có appName
6262 packages = preloadSelectedApps()
63+
64+ if (packages.isEmpty()) {
65+ // đảm bảo dialog không hiểu nhầm có selection
66+ packages.clear()
67+ }
6368
6469 val dialog = DialogAppChooser (
6570 darkMode,
@@ -228,42 +233,74 @@ class ParamsAppChooserRender(
228233 }
229234 }
230235
231- private fun preloadSelectedApps (): ArrayList <AdapterAppChooser .AppInfo > {
232- val pm = context.packageManager
233- val result = ArrayList <AdapterAppChooser .AppInfo >()
234-
235- val values = if (actionParamInfo.multiple) {
236- valueView.text.toString()
237- .split(actionParamInfo.separator)
238- .filter { it.isNotEmpty() }
239- } else {
240- listOf (valueView.text.toString()).filter { it.isNotEmpty() }
236+ private fun resolveCurrentAppName () {
237+ val pm = context.packageManager
238+
239+ if (actionParamInfo.multiple) {
240+ val pkgs = valueView.text.toString()
241+ .split(actionParamInfo.separator)
242+ .filter { it.isNotEmpty() }
243+
244+ val names = ArrayList <String >(pkgs.size)
245+ for (pkg in pkgs) {
246+ try {
247+ val app = pm.getApplicationInfo(pkg, 0 )
248+ names.add(app.loadLabel(pm)?.toString() ? : pkg)
249+ } catch (_: Exception ) {
250+ names.add(pkg)
251+ }
241252 }
242-
243- for (pkg in values) {
253+ nameView.text = names.joinToString(" ," )
254+ } else {
255+ val pkg = valueView.text.toString()
256+ if (pkg.isNotEmpty()) {
244257 try {
245258 val app = pm.getApplicationInfo(pkg, 0 )
246- result.add(
247- AdapterAppChooser .AppInfo ().apply {
248- packageName = pkg
249- appName = app.loadLabel(pm)?.toString() ? : pkg
250- selected = true
251- }
252- )
259+ nameView.text = app.loadLabel(pm)?.toString() ? : pkg
253260 } catch (_: Exception ) {
254- // app không tồn tại → vẫn thêm
255- result.add(
256- AdapterAppChooser .AppInfo ().apply {
257- packageName = pkg
258- appName = pkg
259- selected = true
260- }
261- )
261+ nameView.text = pkg
262262 }
263263 }
264-
265- return result
266264 }
265+ }
266+
267+ private fun preloadSelectedApps (): ArrayList <AdapterAppChooser .AppInfo > {
268+ val pm = context.packageManager
269+ val result = ArrayList <AdapterAppChooser .AppInfo >()
270+
271+ val values = if (actionParamInfo.multiple) {
272+ valueView.text.toString()
273+ .split(actionParamInfo.separator)
274+ .filter { it.isNotEmpty() }
275+ } else {
276+ listOf (valueView.text.toString()).filter { it.isNotEmpty() }
277+ }
278+
279+ // ✅ nếu chưa chọn gì → trả list rỗng
280+ if (values.isEmpty()) return result
281+
282+ for (pkg in values) {
283+ try {
284+ val app = pm.getApplicationInfo(pkg, 0 )
285+ result.add(
286+ AdapterAppChooser .AppInfo ().apply {
287+ packageName = pkg
288+ appName = app.loadLabel(pm)?.toString() ? : pkg
289+ selected = true
290+ }
291+ )
292+ } catch (_: Exception ) {
293+ result.add(
294+ AdapterAppChooser .AppInfo ().apply {
295+ packageName = pkg
296+ appName = pkg
297+ selected = true
298+ }
299+ )
300+ }
301+ }
302+ return result
303+ }
267304 // =======================
268305 // CALLBACK
269306 // =======================
0 commit comments