123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- /**
- * ownCloud Android client application
- *
- * @author masensio
- * Copyright (C) 2016 ownCloud Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package com.owncloud.android.ui.activity;
- import android.content.SharedPreferences;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.preference.PreferenceManager;
- import android.view.MenuItem;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
- import com.google.android.material.snackbar.Snackbar;
- import com.owncloud.android.R;
- import com.owncloud.android.lib.common.utils.Log_OC;
- import java.io.File;
- import androidx.appcompat.app.ActionBar;
- import androidx.appcompat.app.AppCompatActivity;
- public class ManageSpaceActivity extends AppCompatActivity {
- private static final String TAG = ManageSpaceActivity.class.getSimpleName();
- private static final String LIB_FOLDER = "lib";
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_manage_space);
- ActionBar actionBar = getSupportActionBar();
- actionBar.setDisplayHomeAsUpEnabled(true);
- actionBar.setTitle(R.string.manage_space_title);
- TextView descriptionTextView = findViewById(R.id.general_description);
- descriptionTextView.setText(getString(R.string.manage_space_description, getString(R.string.app_name)));
- Button clearDataButton = findViewById(R.id.clearDataButton);
- clearDataButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- ClearDataAsynTask clearDataTask = new ClearDataAsynTask();
- clearDataTask.execute();
- }
- });
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- boolean retval = true;
- switch (item.getItemId()) {
- case android.R.id.home:
- finish();
- break;
- default:
- Log_OC.w(TAG, "Unknown menu item triggered");
- retval = super.onOptionsItemSelected(item);
- break;
- }
- return retval;
- }
- /**
- * AsyncTask for Clear Data, saving the passcode
- */
- private class ClearDataAsynTask extends AsyncTask<Void, Void, Boolean>{
- @Override
- protected Boolean doInBackground(Void... params) {
- // Save passcode from Share preferences
- SharedPreferences appPrefs = PreferenceManager
- .getDefaultSharedPreferences(getApplicationContext());
- String lockPref = appPrefs.getString(Preferences.PREFERENCE_LOCK, Preferences.LOCK_NONE);
- boolean passCodeEnable = Preferences.LOCK_PASSCODE.equals(
- appPrefs.getString(Preferences.PREFERENCE_LOCK, ""));
- String passCodeDigits[] = new String[4];
- if (passCodeEnable) {
- passCodeDigits[0] = appPrefs.getString(PassCodeActivity.PREFERENCE_PASSCODE_D1, null);
- passCodeDigits[1] = appPrefs.getString(PassCodeActivity.PREFERENCE_PASSCODE_D2, null);
- passCodeDigits[2] = appPrefs.getString(PassCodeActivity.PREFERENCE_PASSCODE_D3, null);
- passCodeDigits[3] = appPrefs.getString(PassCodeActivity.PREFERENCE_PASSCODE_D4, null);
- }
- // Clear data
- boolean result = clearApplicationData();
- // Clear SharedPreferences
- SharedPreferences.Editor appPrefsEditor = PreferenceManager
- .getDefaultSharedPreferences(getApplicationContext()).edit();
- appPrefsEditor.clear();
- result = result && appPrefsEditor.commit();
- // Recover passcode
- if (passCodeEnable) {
- appPrefsEditor.putString(PassCodeActivity.PREFERENCE_PASSCODE_D1, passCodeDigits[0]);
- appPrefsEditor.putString(PassCodeActivity.PREFERENCE_PASSCODE_D2, passCodeDigits[1]);
- appPrefsEditor.putString(PassCodeActivity.PREFERENCE_PASSCODE_D3, passCodeDigits[2]);
- appPrefsEditor.putString(PassCodeActivity.PREFERENCE_PASSCODE_D4, passCodeDigits[3]);
- }
- appPrefsEditor.putString(Preferences.PREFERENCE_LOCK, lockPref);
- result = result && appPrefsEditor.commit();
- return result;
- }
- @Override
- protected void onPostExecute(Boolean result) {
- super.onPostExecute(result);
- if (!result) {
- Snackbar.make(
- findViewById(android.R.id.content),
- R.string.manage_space_clear_data,
- Snackbar.LENGTH_LONG
- ).show();
- } else {
- finish();
- System.exit(0);
- }
- }
- public boolean clearApplicationData() {
- boolean clearResult = true;
- File appDir = new File(getCacheDir().getParent());
- if (appDir.exists()) {
- String[] children = appDir.list();
- if (children != null) {
- for (String s : children) {
- if (!LIB_FOLDER.equals(s)) {
- File fileToDelete = new File(appDir, s);
- clearResult = clearResult && deleteDir(fileToDelete);
- Log_OC.d(TAG, "Clear Application Data, File: " + fileToDelete.getName() + " DELETED *****");
- }
- }
- } else {
- clearResult = false;
- }
- }
- return clearResult;
- }
- public boolean deleteDir(File dir) {
- if (dir != null && dir.isDirectory()) {
- String[] children = dir.list();
- if (children != null) {
- for (String child : children) {
- boolean success = deleteDir(new File(dir, child));
- if (!success) {
- Log_OC.w(TAG, "File NOT deleted " + child);
- return false;
- } else {
- Log_OC.d(TAG, "File deleted " + child);
- }
- }
- } else {
- return false;
- }
- }
- if (dir != null) {
- return dir.delete();
- } else {
- return false;
- }
- }
- }
- }
|