From 2f144fc07d3f202b83ffb6064a223bbadef65114 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Thu, 30 Sep 2010 18:49:18 -0700 Subject: [PATCH] Fix android:allowClearUserData. Now respect this flag for system apps. Change-Id: I496b0051a4998cb41b8c07fd0eb85e253de1eb97 --- .../applications/InstalledAppDetails.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java index 1583ef12a4a..f684c1d2850 100644 --- a/src/com/android/settings/applications/InstalledAppDetails.java +++ b/src/com/android/settings/applications/InstalledAppDetails.java @@ -71,6 +71,7 @@ public class InstalledAppDetails extends Activity implements View.OnClickListener, ApplicationsState.Callbacks { private static final String TAG="InstalledAppDetails"; static final boolean SUPPORT_DISABLE_APPS = false; + private static final boolean localLOGV = false; private PackageManager mPm; private ApplicationsState mState; @@ -80,7 +81,7 @@ public class InstalledAppDetails extends Activity private boolean mMoveInProgress = false; private boolean mUpdatedSysApp = false; private Button mActivitiesButton; - private boolean localLOGV = false; + private boolean mCanClearData = true; private TextView mAppVersion; private TextView mTotalSize; private TextView mAppSize; @@ -182,12 +183,20 @@ public class InstalledAppDetails extends Activity } private void initDataButtons() { - if (mAppEntry.info.manageSpaceActivityName != null) { - mClearDataButton.setText(R.string.manage_space_text); - } else { + if ((mAppEntry.info.flags&(ApplicationInfo.FLAG_SYSTEM + | ApplicationInfo.FLAG_ALLOW_CLEAR_USER_DATA)) + == ApplicationInfo.FLAG_SYSTEM) { mClearDataButton.setText(R.string.clear_user_data_text); + mClearDataButton.setEnabled(false); + mCanClearData = false; + } else { + if (mAppEntry.info.manageSpaceActivityName != null) { + mClearDataButton.setText(R.string.manage_space_text); + } else { + mClearDataButton.setText(R.string.clear_user_data_text); + } + mClearDataButton.setOnClickListener(this); } - mClearDataButton.setOnClickListener(this); } private CharSequence getMoveErrMsg(int errCode) { @@ -505,7 +514,7 @@ public class InstalledAppDetails extends Activity mTotalSize.setText(getSizeStr(mAppEntry.size)); } - if (mAppEntry.dataSize <= 0) { + if (mAppEntry.dataSize <= 0 || !mCanClearData) { mClearDataButton.setEnabled(false); } else { mClearDataButton.setEnabled(true);