diff options
author | Suchi Amalapurapu <asuchitra@google.com> | 2009-06-17 18:24:44 -0700 |
---|---|---|
committer | Suchi Amalapurapu <asuchitra@google.com> | 2009-06-17 18:24:44 -0700 |
commit | e1fae30e20b1515eeb036a7c103e1e70de130bdd (patch) | |
tree | 7cafbd21f0df7606d64ea19e07c622efe4dbc6b4 /services/java/com/android/server/PackageManagerService.java | |
parent | 253e8e34b323f05bb7d5fdc8591bdaadbab55dd6 (diff) | |
parent | 0781df943e5a7a72ac82394874b6200d14ddd02c (diff) | |
download | frameworks_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.java | 30 |
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) { |