Hay una nueva API introducida en API 19 (KitKat):
ActivityManager.clearApplicationUserData () .
Recomiendo encarecidamente usarlo 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 pirata, también puede ocultar el botón en la interfaz de usuario, por lo que la funcionalidad simplemente no está disponible en teléfonos antiguos.
El conocimiento de este método es obligatorio para cualquiera que lo utilice android:manageSpaceActivity
.
Siempre que uso esto, lo hago desde un manageSpaceActivity
archivo que tiene android:process=":manager"
. Allí, elimino manualmente cualquier otro proceso de mi aplicación. Esto me permite dejar una interfaz de usuario ejecutándose y dejar que el usuario decida a dónde ir.
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);
}
}
}
Solo estoy poniendo el tutorial del enlace que ihrupin publicó aquí en esta publicación.
Entonces, si desea un botón para hacer esto, debe llamar a MyApplication.getInstance (). clearApplicationData () desde dentro de un onClickListener
Actualización: su
SharedPreferences
instancia puede retener sus datos y volver a crear el archivo de preferencias después de eliminarlo. Entonces querrás obtener tuSharedPreferences
objeto yActualizar:
Debe agregar
android:name="your.package.MyApplication"
alapplication tag
AndroidManifest.xml interno si no lo había hecho. De lo contrario,MyApplication.getInstance()
devuelvenull
, lo que resulta en una NullPointerException .fuente
combinar código de 2 respuestas:
Aquí está la respuesta basada en fuente combinada resultante
fuente
La forma más sencilla de hacer esto es
Esto borrará los datos y eliminará su aplicación de la memoria. Es equivalente a la opción de borrar datos en Configuración -> Administrador de aplicaciones -> Su aplicación -> Borrar datos
fuente
pm
) que podrían no existir es riesgoso. No forman parte del "contrato" de Android SDK, por lo que si existen en un dispositivo determinado o si se comportan igual que en otros dispositivos depende de los fabricantes y desarrolladores de ROM personalizados.Lo que uso en todas partes:
fuente
Si quieres un truco menos detallado:
fuente