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

Commit 57e6a914 authored by Sudheer Shanka's avatar Sudheer Shanka Committed by Android (Google) Code Review
Browse files

Merge "Show app installer info even if it doesn't handle ACTION.APP_SHOW_INFO." into nyc-dev

parents 0e4816ef c3eb16ed
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
@@ -904,25 +904,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) {