summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/PackageManagerService.java
diff options
context:
space:
mode:
authorSuchi Amalapurapu <asuchitra@google.com>2009-06-17 18:24:44 -0700
committerSuchi Amalapurapu <asuchitra@google.com>2009-06-17 18:24:44 -0700
commite1fae30e20b1515eeb036a7c103e1e70de130bdd (patch)
tree7cafbd21f0df7606d64ea19e07c622efe4dbc6b4 /services/java/com/android/server/PackageManagerService.java
parent253e8e34b323f05bb7d5fdc8591bdaadbab55dd6 (diff)
parent0781df943e5a7a72ac82394874b6200d14ddd02c (diff)
downloadframeworks_base-e1fae30e20b1515eeb036a7c103e1e70de130bdd.zip
frameworks_base-e1fae30e20b1515eeb036a7c103e1e70de130bdd.tar.gz
frameworks_base-e1fae30e20b1515eeb036a7c103e1e70de130bdd.tar.bz2
Merge commit '0781df94' into manualmerge
Conflicts: Android.mk api/current.xml
Diffstat (limited to 'services/java/com/android/server/PackageManagerService.java')
-rw-r--r--services/java/com/android/server/PackageManagerService.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java
index d98738a..0630b88 100644
--- a/services/java/com/android/server/PackageManagerService.java
+++ b/services/java/com/android/server/PackageManagerService.java
@@ -34,6 +34,8 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.IntentSender;
+import android.content.IntentSender.SendIntentException;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.ComponentInfo;
@@ -955,6 +957,34 @@ class PackageManagerService extends IPackageManager.Stub {
}
});
}
+
+ public void freeStorageWithIntent(final long freeStorageSize, final IntentSender pi) {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.CLEAR_APP_CACHE, null);
+ // Queue up an async operation since clearing cache may take a little while.
+ mHandler.post(new Runnable() {
+ public void run() {
+ mHandler.removeCallbacks(this);
+ int retCode = -1;
+ if (mInstaller != null) {
+ retCode = mInstaller.freeCache(freeStorageSize);
+ if (retCode < 0) {
+ Log.w(TAG, "Couldn't clear application caches");
+ }
+ }
+ if(pi != null) {
+ try {
+ // Callback via pending intent
+ int code = (retCode >= 0) ? 1 : 0;
+ pi.sendIntent(null, code, null,
+ null, null);
+ } catch (SendIntentException e1) {
+ Log.i(TAG, "Failed to send pending intent");
+ }
+ }
+ }
+ });
+ }
public ActivityInfo getActivityInfo(ComponentName component, int flags) {
synchronized (mPackages) {