From 0a94305577c874f52407078a0985f113f8247f2c Mon Sep 17 00:00:00 2001 From: Rohit Kushwaha Date: Fri, 26 Jun 2026 14:11:08 +0530 Subject: [PATCH] feat: multi icon support --- config.xml | 232 +++++++++++------- package.json | 4 +- res/android/drawable/ic_alt.png | Bin 0 -> 29529 bytes .../android/com/foxdebug/system/System.java | 130 +++++++++- src/plugins/system/system.d.ts | 20 ++ src/plugins/system/utils/changeProvider.js | 2 +- src/plugins/system/www/plugin.js | 8 +- 7 files changed, 298 insertions(+), 98 deletions(-) create mode 100644 res/android/drawable/ic_alt.png diff --git a/config.xml b/config.xml index a5123ff8d..dc125f26a 100644 --- a/config.xml +++ b/config.xml @@ -1,90 +1,142 @@ - - - Acode - - Light weight code editor and web IDE for android. - - - Foxdebug - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Acode + + Light weight code editor and web IDE for android. + + + Foxdebug + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/package.json b/package.json index c111ae087..440e56dda 100644 --- a/package.json +++ b/package.json @@ -42,9 +42,7 @@ "cordova-plugin-iap": {}, "com.foxdebug.acode.rk.customtabs": {}, "cordova-plugin-system": {}, - "cordova-plugin-advanced-http": { - "ANDROIDBLACKLISTSECURESOCKETPROTOCOLS": "SSLv3,TLSv1" - } + "cordova-plugin-advanced-http": {} }, "platforms": [ "android" diff --git a/res/android/drawable/ic_alt.png b/res/android/drawable/ic_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..991687e729ab8ef7a25b9bae7e8b185646eb7a59 GIT binary patch literal 29529 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 Build.VERSION_CODES.N) { + flags |= PackageManager.MATCH_DISABLED_COMPONENTS; + } else { + flags |= PackageManager.GET_DISABLED_COMPONENTS; + } + + List resolveInfos = pm.queryIntentActivities(intent, flags); + JSONArray result = new JSONArray(); + + for (ResolveInfo info : resolveInfos) { + JSONObject iconInfo = new JSONObject(); + String name = info.activityInfo.name; + String label = info.loadLabel(pm).toString(); + + int iconRes = info.activityInfo.getIconResource(); + String iconName = ""; + if (iconRes != 0) { + try { + iconName = context.getResources().getResourceEntryName(iconRes); + } catch (Exception e) { + // ignore + } + } + + // Check if currently enabled + ComponentName componentName = new ComponentName(context, name); + int enabledSetting = pm.getComponentEnabledSetting(componentName); + boolean isEnabled; + if (enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { + isEnabled = info.activityInfo.enabled; + } else { + isEnabled = (enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_ENABLED); + } + + iconInfo.put("name", name); + iconInfo.put("label", label); + iconInfo.put("icon", iconName); + iconInfo.put("enabled", isEnabled); + result.put(iconInfo); + } + + callbackContext.success(result); + } catch (Exception e) { + callbackContext.error(e.getMessage()); + } + } + + private void setAppIcon(String targetComponentName, CallbackContext callbackContext) { + try { + PackageManager pm = context.getPackageManager(); + Intent intent = new Intent(Intent.ACTION_MAIN); + intent.addCategory(Intent.CATEGORY_LAUNCHER); + intent.setPackage(context.getPackageName()); + + int flags = PackageManager.GET_META_DATA; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + flags |= PackageManager.MATCH_DISABLED_COMPONENTS; + } else { + flags |= PackageManager.GET_DISABLED_COMPONENTS; + } + + List resolveInfos = pm.queryIntentActivities(intent, flags); + + String target = targetComponentName; + if (target.startsWith(".")) { + target = context.getPackageName() + target; + } + + boolean found = false; + + // First pass: verify if targetComponentName is a valid launcher component + for (ResolveInfo info : resolveInfos) { + if (info.activityInfo.name.equals(target)) { + found = true; + break; + } + } + + if (!found) { + callbackContext.error("Component " + target + " not found as a launcher activity or alias in the manifest"); + return; + } + + // Second pass: enable targetComponentName and disable others + for (ResolveInfo info : resolveInfos) { + String name = info.activityInfo.name; + ComponentName componentName = new ComponentName(context, name); + if (name.equals(target)) { + pm.setComponentEnabledSetting( + componentName, + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, + PackageManager.DONT_KILL_APP + ); + } else { + pm.setComponentEnabledSetting( + componentName, + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP + ); + } + } + + callbackContext.success(); + } catch (Exception e) { + callbackContext.error(e.getMessage()); + } + } } diff --git a/src/plugins/system/system.d.ts b/src/plugins/system/system.d.ts index aa2ef8bf7..d1ffc2337 100644 --- a/src/plugins/system/system.d.ts +++ b/src/plugins/system/system.d.ts @@ -295,6 +295,26 @@ interface System { onSuccess?: () => void, onFail?: OnFail, ): void; + /** + * Fetch all available launcher app icons (activities/activity-aliases). + * @param onSuccess + * @param onFail + */ + getAppIcons(onSuccess: (icons: AppIcon[]) => void, onFail: OnFail): void; + /** + * Set the active app icon by component/alias name. + * @param componentName + * @param onSuccess + * @param onFail + */ + setAppIcon(componentName: string, onSuccess: OnSuccessBool, onFail: OnFail): void; +} + +interface AppIcon { + name: string; + label: string; + icon: string; + enabled: boolean; } interface Window{ diff --git a/src/plugins/system/utils/changeProvider.js b/src/plugins/system/utils/changeProvider.js index 45095aa8d..1463b43d6 100644 --- a/src/plugins/system/utils/changeProvider.js +++ b/src/plugins/system/utils/changeProvider.js @@ -15,7 +15,7 @@ module.exports = { try { const fileData = fs.readFileSync(configXML, "utf8"); const manifest = fs.readFileSync(androidManifest, "utf8"); - const ID = reset ? "com.foxdebug" : /widget id="([0-9a-zA-Z\.\-_]*)"/.exec(fileData)[1]; + const ID = reset ? "com.foxdebug" : /widget\s+id="([0-9a-zA-Z\.\-_]*)"/.exec(fileData)[1]; const newFileData = manifest.replace( /(android:authorities=")([0-9a-zA-Z\.\-_]*)(")/, `$1${reset ? "com.foxdebug" : ID}.provider$3` diff --git a/src/plugins/system/www/plugin.js b/src/plugins/system/www/plugin.js index 8bebd47ef..1450ce387 100644 --- a/src/plugins/system/www/plugin.js +++ b/src/plugins/system/www/plugin.js @@ -272,5 +272,11 @@ module.exports = { [text1, text2] ); }); + }, + getAppIcons: function (success, error) { + cordova.exec(success, error, 'System', 'get-app-icons', []); + }, + setAppIcon: function (componentName, success, error) { + cordova.exec(success, error, 'System', 'set-app-icon', [componentName]); } -}; +};