When I try to read the application label of other apps with the package manager, I get a Resources.NotFoundException. The interesting part is, that the exception only appears sometimes, meaning the code works for some re-installations but not for all.
Below is the code fragment that throws the exception (I try to catch it but that doesn't work either).
public static void collectInstalledApps(Context context) {
PackageManager packageManager = context.getPackageManager();
List<ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
Log.d("APPS", "Appl Info Size " + packages.size());
Set<String> oldApps = AppSettings.INSTALLED_APPS.keySet();
Log.d("APPS", "old apps: " + oldApps);
Set<String> newApps = new HashSet<>();
AppSettings.INSTALLED_APPS = new HashMap<>();
for(ApplicationInfo ai : packages) {
String packageName = ai.packageName;
String name = packageName;
try {
name = packageManager.getApplicationLabel(ai).toString();
} catch (android.content.res.Resources.NotFoundException e) {
Log.d("PACKAGE_MANAGER", "Not found name: " + packageName);
//TODO fix
} catch (RuntimeException exception) {
Log.d("PACKAGE_MANAGER", "Other exception: " + packageName);
}
}
}
This is the exception:
2023-09-10 23:56:14.491 20524-20524/com.example.focuspocus E/mple.focuspocus: Resource 7f120059 is a complex map type.
2023-09-10 23:56:14.491 20524-20524/com.example.focuspocus W/PackageManager: Failure retrieving text 0x7f120059 in package com.kiloo.subwaysurf
android.content.res.Resources$NotFoundException: String resource ID #0x7f120059
at android.content.res.Resources.getText(Resources.java:453)
at android.app.ApplicationPackageManager.getText(ApplicationPackageManager.java:2336)
at android.content.pm.PackageItemInfo.loadUnsafeLabel(PackageItemInfo.java:222)
at android.content.pm.PackageItemInfo.loadLabel(PackageItemInfo.java:212)
at android.app.ApplicationPackageManager.getApplicationLabel(ApplicationPackageManager.java:2380)
at com.example.focuspocus.settings.AppSettings.collectInstalledApps(AppSettings.java:369)
at com.example.focuspocus.home.HomeActivity.onCreate(HomeActivity.java:70)
at android.app.Activity.performCreate(Activity.java:8342)
at android.app.Activity.performCreate(Activity.java:8321)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1417)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3625)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3781)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:138)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2306)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7918)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)