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
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index e439bed..d972e07 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -1124,5 +1124,18 @@
}
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;
+ }
}
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index 14277c9..b6be227 100755
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -913,25 +913,37 @@
}
}
+ 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);
- 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.setIntent(result);
- category.addPreference(pref);
- }
+ 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, 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);
+ } else {
+ pref.setEnabled(false);
+ }
+ category.addPreference(pref);
}
private boolean hasPermission(String permission) {