1、packages/apps/Settings/res/layout/master_clear_confirm.xml b/res/layout/master_clear_confirm.xml
<Button
android:id="@+id/master_clear"
android:layout_gravity="center_horizontal"
android:layout_marginTop="40dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/clear_failed_dlg_title"
android:gravity="center" />
2、packages/apps/src/com/android/settings/MasterClearConfirm.java b/src/com/android/settings/MasterClearConfirm.java
private ClearUserDataObserver mClearDataObserver;
if (mClearDataObserver == null) {
mClearDataObserver = new ClearUserDataObserver();
}
private Button.OnClickListener mMasterClearClickListener = new Button.OnClickListener() {
public void onClick(View v) {
if (Utils.isMonkeyRunning()) {
return;
}
new AsyncTask<Void, Void, Void>() {
//int mOldOrientation;
ProgressDialog mProgressDialog;
@Override
protected Void doInBackground(Void... params) {
getAllAppNamesPackages();
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
mProgressDialog.hide();
Log.i(TAG, "onPostExecute:" );
// Intent intent = new Intent(Intent.ACTION_REBOOT);
// // 设置是否需要用户确认,若不需要,可以不设置或设置为false
// intent.putExtra(Intent.EXTRA_KEY_CONFIRM, false);
// // 当作新任务执行
// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// // 启动
// getActivity().startActivity(intent);
}
@Override
protected void onPreExecute() {
Log.i(TAG, "onPreExecute:" );
mProgressDialog = getProgressDialog();
mProgressDialog.show();
}
}.execute();
}
private ProgressDialog getProgressDialog() {
final ProgressDialog progressDialog = new ProgressDialog(getActivity());
progressDialog.setIndeterminate(true);
progressDialog.setCancelable(false);
progressDialog.setTitle(
getActivity().getString(R.string.master_clear_progress_title));
progressDialog.setMessage(
getActivity().getString(R.string.master_clear_progress_text));
return progressDialog;
}
};
private void getAllAppNamesPackages() {
PackageManager pm = getActivity().getPackageManager();
List<PackageInfo> list = pm
.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
boolean res = false;
ActivityManager am = (ActivityManager)
getActivity().getSystemService(Context.ACTIVITY_SERVICE);
List<PackageInfo> packageInfos = getActivity().getPackageManager().getInstalledPackages(0);
List<PackageInfo> myPackageInfos = new ArrayList<PackageInfo>();
for (int i = 0; i < packageInfos.size(); i++)
{
PackageInfo packageInfo = packageInfos.get(i);
// 过滤掉系统应用
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0)
{
res = am.clearApplicationUserData(packageInfo.packageName, mClearDataObserver);
}else{
//packageName[j] 自己添加的包名
for(int j=0;j<packageName.length;j++){
if(packageName[j].equals(packageInfo.packageName)){
Log.i(TAG, "packageName[j]:" + packageName[j]);
res = am.clearApplicationUserData(packageName[j], mClearDataObserver);
}
}
}
}
}
class ClearUserDataObserver extends IPackageDataObserver.Stub {
public void onRemoveCompleted(final String packageName, final boolean succeeded) {
}
}