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
This commit is contained in:
@@ -1124,5 +1124,18 @@ public final class Utils extends com.android.settingslib.Utils {
|
|||||||
}
|
}
|
||||||
return false;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -913,26 +913,38 @@ public class InstalledAppDetails extends AppInfoBase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addAppInstallerInfoPref(screen);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addAppInstallerInfoPref(PreferenceScreen screen) {
|
||||||
final String installerPackageName =
|
final String installerPackageName =
|
||||||
getContext().getPackageManager().getInstallerPackageName(mPackageName);
|
getContext().getPackageManager().getInstallerPackageName(mPackageName);
|
||||||
if (installerPackageName != null) {
|
if (installerPackageName == null) {
|
||||||
final Intent intent = new Intent(Intent.ACTION_SHOW_APP_INFO)
|
return;
|
||||||
.setPackage(installerPackageName);
|
}
|
||||||
final Intent result = resolveIntent(intent);
|
final CharSequence installerLabel = Utils.getApplicationLabel(getContext(),
|
||||||
if (result != null) {
|
installerPackageName);
|
||||||
result.putExtra(Intent.EXTRA_PACKAGE_NAME, mPackageName);
|
if (installerLabel == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
PreferenceCategory category = new PreferenceCategory(getPrefContext());
|
PreferenceCategory category = new PreferenceCategory(getPrefContext());
|
||||||
category.setTitle(R.string.app_install_details_group_title);
|
category.setTitle(R.string.app_install_details_group_title);
|
||||||
screen.addPreference(category);
|
screen.addPreference(category);
|
||||||
Preference pref = new Preference(getPrefContext());
|
Preference pref = new Preference(getPrefContext());
|
||||||
pref.setTitle(R.string.app_install_details_title);
|
pref.setTitle(R.string.app_install_details_title);
|
||||||
pref.setKey("app_info_store");
|
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);
|
pref.setIntent(result);
|
||||||
|
} else {
|
||||||
|
pref.setEnabled(false);
|
||||||
|
}
|
||||||
category.addPreference(pref);
|
category.addPreference(pref);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean hasPermission(String permission) {
|
private boolean hasPermission(String permission) {
|
||||||
if (mPackageInfo == null || mPackageInfo.requestedPermissions == null) {
|
if (mPackageInfo == null || mPackageInfo.requestedPermissions == null) {
|
||||||
|
Reference in New Issue
Block a user