Android PackageManager: Resources.NotFoundException thrown when trying to read application label

58 views Asked by At

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)
0

There are 0 answers