Merge "Add getTargetSdkVersion without AppInfo"

This commit is contained in:
Roshan Pius
2021-02-23 18:27:04 +00:00
committed by Gerrit Code Review
5 changed files with 51 additions and 8 deletions

View File

@@ -12039,6 +12039,7 @@ package android.content.pm {
method public boolean getSyntheticAppDetailsActivityEnabled(@NonNull String);
method @NonNull public abstract android.content.pm.FeatureInfo[] getSystemAvailableFeatures();
method @Nullable public abstract String[] getSystemSharedLibraryNames();
method @IntRange(from=0) public int getTargetSdkVersion(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
method @Nullable public abstract CharSequence getText(@NonNull String, @StringRes int, @Nullable android.content.pm.ApplicationInfo);
method @NonNull public abstract android.graphics.drawable.Drawable getUserBadgedDrawableForDensity(@NonNull android.graphics.drawable.Drawable, @NonNull android.os.UserHandle, @Nullable android.graphics.Rect, int);
method @NonNull public abstract android.graphics.drawable.Drawable getUserBadgedIcon(@NonNull android.graphics.drawable.Drawable, @NonNull android.os.UserHandle);

View File

@@ -450,6 +450,19 @@ public class ApplicationPackageManager extends PackageManager {
return info;
}
@Override
public int getTargetSdkVersion(@NonNull String packageName) throws NameNotFoundException {
try {
int version = mPM.getTargetSdkVersion(packageName);
if (version != -1) {
return version;
}
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
throw new PackageManager.NameNotFoundException(packageName);
}
@Override
public ActivityInfo getActivityInfo(ComponentName className, int flags)
throws NameNotFoundException {

View File

@@ -82,6 +82,11 @@ interface IPackageManager {
@UnsupportedAppUsage
ApplicationInfo getApplicationInfo(String packageName, int flags ,int userId);
/**
* @return the target SDK for the given package name, or -1 if it cannot be retrieved
*/
int getTargetSdkVersion(String packageName);
@UnsupportedAppUsage
ActivityInfo getActivityInfo(in ComponentName className, int flags, int userId);

View File

@@ -4255,6 +4255,15 @@ public abstract class PackageManager {
return getApplicationInfoAsUser(packageName, flags, user.getIdentifier());
}
/**
* @return The target SDK version for the given package name.
* @throws NameNotFoundException if a package with the given name cannot be found on the system.
*/
@IntRange(from = 0)
public int getTargetSdkVersion(@NonNull String packageName) throws NameNotFoundException {
throw new UnsupportedOperationException();
}
/**
* Retrieve all of the information we know about a particular activity
* class.

View File

@@ -5349,6 +5349,23 @@ public class PackageManagerService extends IPackageManager.Stub
return updateFlagsForComponent(flags, userId);
}
@Override
public int getTargetSdkVersion(String packageName) {
synchronized (mLock) {
final AndroidPackage pkg = mPackages.get(packageName);
if (pkg == null) {
return -1;
}
final PackageSetting ps = getPackageSetting(pkg.getPackageName());
if (shouldFilterApplicationLocked(ps, Binder.getCallingUid(),
UserHandle.getCallingUserId())) {
return -1;
}
return pkg.getTargetSdkVersion();
}
}
@Override
public ActivityInfo getActivityInfo(ComponentName component, int flags, int userId) {
return getActivityInfoInternal(component, flags, Binder.getCallingUid(), userId);
@@ -24025,15 +24042,13 @@ public class PackageManagerService extends IPackageManager.Stub
}
@Override
public int getTargetSdkVersionForPackage(String packageName)
throws RemoteException {
int callingUser = UserHandle.getUserId(Binder.getCallingUid());
ApplicationInfo info = getApplicationInfo(packageName, 0, callingUser);
if (info == null) {
throw new RemoteException(
"Couldn't get ApplicationInfo for package " + packageName);
public int getTargetSdkVersionForPackage(String packageName) throws RemoteException {
int targetSdk = getTargetSdkVersion(packageName);
if (targetSdk != -1) {
return targetSdk;
}
return info.targetSdkVersion;
throw new RemoteException("Couldn't get targetSdkVersion for package " + packageName);
}
@Override