Borrar los datos de la aplicación mediante programación

Quiero borrar los datos de mi aplicación mediante programación.

Los datos de la aplicación pueden contener cosas como bases de datos, preferencias compartidas, archivos Interno-Externos o cualquier otro archivo creado dentro de la aplicación.

Sé que podemos borrar datos en el dispositivo móvil a través de:

Ajustes-> Aplicaciones-> ManageApplications-> My_application-> Borrar datos

Pero tengo que hacer lo anterior a través de un programa Android?

Gracias por adelantado…

Estoy poniendo el tutorial desde el enlace ihrupin publicado aquí en este post.

package com.hrupin.cleaner; import java.io.File; import android.app.Application; import android.util.Log; public class MyApplication extends Application { private static MyApplication instance; @Override public void onCreate() { super.onCreate(); instance = this; } public static MyApplication getInstance() { return instance; } public void clearApplicationData() { File cacheDirectory = getCacheDir(); File applicationDirectory = new File(cacheDirectory.getParent()); if (applicationDirectory.exists()) { String[] fileNames = applicationDirectory.list(); for (String fileName : fileNames) { if (!fileName.equals("lib")) { deleteFile(new File(applicationDirectory, fileName)); } } } } public static boolean deleteFile(File file) { boolean deletedAll = true; if (file != null) { if (file.isDirectory()) { String[] children = file.list(); for (int i = 0; i < children.length; i++) { deletedAll = deleteFile(new File(file, children[i])) && deletedAll; } } else { deletedAll = file.delete(); } } return deletedAll; } } 

Así que si quieres un botón para hacer esto, necesitas llamar a MyApplication.getInstance (). ClearApplicationData () desde dentro de un onClickListener

Actualización: su instancia SharedPreferences puede retener sus datos y volver a crear el archivo de preferencias después de eliminarlo. Así que su deseo de obtener su objeto SharedPreference y

 prefs.edit().clear().commit(); 

Actualizar:

Necesita agregar android:name="your.package.MyApplication" a la application tag la application tag dentro de AndroidManifest.xml si no lo ha hecho. Else, MyApplication.getInstance () devuelve null, resultando una NullPointerException .

Hay una nueva API introducida en API 19 (KitKat): ActivityManager.clearApplicationUserData () .

Recomiendo encarecidamente su uso en nuevas aplicaciones:

 import android.os.Build.*; if (VERSION_CODES.KITKAT <= VERSION.SDK_INT) { ((ActivityManager)context.getSystemService(ACTIVITY_SERVICE)) .clearApplicationUserData(); // note: it has a return value! } else { // use old hacky way, which can be removed // once minSdkVersion goes above 19 in a few years. } 

Si no desea la forma hacky también puede ocultar el botón en la interfaz de usuario, de modo que la funcionalidad no está disponible en los teléfonos antiguos.

El conocimiento de este método es obligatorio para cualquier persona que use android:manageSpaceActivity .


Siempre que uso esto, lo hago desde un manageSpaceActivity que tiene android:process=":manager" . Allí, matar manualmente cualquier otro proceso de mi aplicación. Esto me permite dejar que una interfaz de usuario permanezca en funcionamiento y dejar que el usuario decida a dónde ir después.

 private static void killProcessesAround(Activity activity) throws NameNotFoundException { ActivityManager am = (ActivityManager)activity.getSystemService(Context.ACTIVITY_SERVICE); String myProcessPrefix = activity.getApplicationInfo().processName; String myProcessName = activity.getPackageManager().getActivityInfo(activity.getComponentName(), 0).processName; for (ActivityManager.RunningAppProcessInfo proc : am.getRunningAppProcesses()) { if (proc.processName.startsWith(myProcessPrefix) && !proc.processName.equals(myProcessName)) { android.os.Process.killProcess(proc.pid); } } } 

La forma más sencilla de hacerlo es

 private void deleteAppData() { try { // clearing app data String packageName = getApplicationContext().getPackageName(); Runtime runtime = Runtime.getRuntime(); runtime.exec("pm clear "+packageName); } catch (Exception e) { e.printStackTrace(); } } 

Esto eliminará los datos y eliminará la aplicación de la memoria. Es equivalente a la opción de datos claros en Configuración -> Administrador de aplicaciones -> Tu aplicación -> Borrar datos

Si quieres un truco menos detallado:

 void deleteDirectory(String path) { Runtime.getRuntime().exec(String.format("rm -rf %s", path)); } 

Lo que uso en todas partes:

 Runtime.getRuntime.exec("pm clear me.myapp"); 

Ejecutar encima de la pieza de código cierra la aplicación y elimina todas las bases de datos y las preferencias compartidas

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.