Throw at getPackageSizeInfoAsUser() callers.
But only when targeting O; if they're old apps then log and pass
a soft failure message to their callback.
Test: builds, boots
Bug: 35749102
Change-Id: I6c6b5a37c23669e7b1ed3c30207bca610821eb1f
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index 64e2d49..97992ca 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -65,6 +65,7 @@
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -2129,10 +2130,15 @@
@Override
public void getPackageSizeInfoAsUser(String packageName, int userHandle,
IPackageStatsObserver observer) {
- try {
- mPM.getPackageSizeInfo(packageName, userHandle, observer);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
+ if (mContext.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.O) {
+ throw new UnsupportedOperationException(
+ "Shame on you for calling a hidden API. Shame!");
+ } else if (observer != null) {
+ Log.d(TAG, "Shame on you for calling a hidden API. Shame!");
+ try {
+ observer.onGetStatsCompleted(null, false);
+ } catch (RemoteException ignored) {
+ }
}
}