Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3eb16ed authored by Sudheer Shanka's avatar Sudheer Shanka
Browse files

Show app installer info even if it doesn't handle ACTION.APP_SHOW_INFO.

- Also fix an issue where we are showing the app name instead of it's
  installer name.

Bug: 28301883
Change-Id: I392f7d01f5ec4d1ba5b5030e33ebe8260ff5aa31
parent 40c228d9
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -1124,5 +1124,18 @@ public final class Utils extends com.android.settingslib.Utils {
        }
        return false;
    }

    public static CharSequence getApplicationLabel(Context context, String packageName) {
        try {
            final ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(
                    packageName,
                    PackageManager.MATCH_DISABLED_COMPONENTS
                    | PackageManager.MATCH_UNINSTALLED_PACKAGES);
            return appInfo.loadLabel(context.getPackageManager());
        } catch (PackageManager.NameNotFoundException e) {
            Log.w(TAG, "Unable to find info for package: " + packageName);
        }
        return null;
    }
}
+28 −16
Original line number Diff line number Diff line
@@ -913,25 +913,37 @@ public class InstalledAppDetails extends AppInfoBase
            }
        }

        addAppInstallerInfoPref(screen);
    }

    private void addAppInstallerInfoPref(PreferenceScreen screen) {
        final String installerPackageName =
                getContext().getPackageManager().getInstallerPackageName(mPackageName);
        if (installerPackageName != null) {
            final Intent intent = new Intent(Intent.ACTION_SHOW_APP_INFO)
                    .setPackage(installerPackageName);
            final Intent result = resolveIntent(intent);
            if (result != null) {
                result.putExtra(Intent.EXTRA_PACKAGE_NAME, mPackageName);
        if (installerPackageName == null) {
            return;
        }
        final CharSequence installerLabel = Utils.getApplicationLabel(getContext(),
                installerPackageName);
        if (installerLabel == null) {
            return;
        }
        PreferenceCategory category = new PreferenceCategory(getPrefContext());
        category.setTitle(R.string.app_install_details_group_title);
        screen.addPreference(category);
        Preference pref = new Preference(getPrefContext());
        pref.setTitle(R.string.app_install_details_title);
        pref.setKey("app_info_store");
                pref.setSummary(getString(R.string.app_install_details_summary, mAppEntry.label));
        pref.setSummary(getString(R.string.app_install_details_summary, installerLabel));
        final Intent intent = new Intent(Intent.ACTION_SHOW_APP_INFO)
                .setPackage(installerPackageName);
        final Intent result = resolveIntent(intent);
        if (result != null) {
            result.putExtra(Intent.EXTRA_PACKAGE_NAME, mPackageName);
            pref.setIntent(result);
                category.addPreference(pref);
            }
        } else {
            pref.setEnabled(false);
        }
        category.addPreference(pref);
    }

    private boolean hasPermission(String permission) {