UdayaLakmal
Usando shell adb podemos borrar los datos de la aplicación.
adb shell pm clear com.android.browser
Pero al ejecutar ese comando desde la aplicación
String deleteCmd = "pm clear com.android.browser";
Runtime runtime = Runtime.getRuntime();
try {
runtime.exec(deleteCmd);
} catch (IOException e) {
e.printStackTrace();
}
Tema:
No borra los datos del usuario ni da ninguna excepción, aunque he dado el siguiente permiso.
<uses-permission android:name="android.permission.CLEAR_APP_USER_DATA"/>
Pregunta:
Cómo borrar los datos de otra aplicación usando shell adb?
Manmohan Soni
Este comando funcionó para mí:
adb shell pm clear packageName
-
¿Es posible usar adb para borrar el caché también?
– desarrollador de Android
5 de enero de 2016 a las 15:53
-
@EduardoCuomo Por supuesto. Quise decir: ¿es posible usar adb para borrar solo el caché también?
– desarrollador de Android
7 de febrero de 2017 a las 12:46
-
@Shayan Puede consultar el siguiente enlace para eliminar solo el caché de la aplicación: stackoverflow.com/questions/18589471/… No estoy seguro de si este comando funcionará o no.
– Manmohan Soni
4 de enero de 2019 a las 5:56
Afaik, los datos de la aplicación del navegador NO se pueden borrar para otras aplicaciones, ya que se almacenan en private_mode
. Por lo tanto, ejecutar este comando probablemente solo funcione en dispositivos rooteados. De lo contrario, debe intentar otro enfoque.
-
Las herramientas de la línea de comandos no están pensadas para que las utilicen las aplicaciones. Es probable que solo funcionen para el usuario semiprivilegiado de adb shell, que se trata como algo comparable en autoridad a un usuario que presiona botones en la GUI si la aplicación de configuración del sistema.
– Chris Stratton
7 junio 2012 a las 15:10
El comando pm clear com.android.browser
requiere permiso de root.
Entonces, corre su
primero.
Aquí está el código de ejemplo:
private static final String CHARSET_NAME = "UTF-8";
String cmd = "pm clear com.android.browser";
ProcessBuilder pb = new ProcessBuilder().redirectErrorStream(true).command("su");
Process p = pb.start();
// We must handle the result stream in another Thread first
StreamReader stdoutReader = new StreamReader(p.getInputStream(), CHARSET_NAME);
stdoutReader.start();
out = p.getOutputStream();
out.write((cmd + "\n").getBytes(CHARSET_NAME));
out.write(("exit" + "\n").getBytes(CHARSET_NAME));
out.flush();
p.waitFor();
String result = stdoutReader.getResult();
La clase StreamReader
:
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.concurrent.CountDownLatch;
class StreamReader extends Thread {
private InputStream is;
private StringBuffer mBuffer;
private String mCharset;
private CountDownLatch mCountDownLatch;
StreamReader(InputStream is, String charset) {
this.is = is;
mCharset = charset;
mBuffer = new StringBuffer("");
mCountDownLatch = new CountDownLatch(1);
}
String getResult() {
try {
mCountDownLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
return mBuffer.toString();
}
@Override
public void run() {
InputStreamReader isr = null;
try {
isr = new InputStreamReader(is, mCharset);
int c = -1;
while ((c = isr.read()) != -1) {
mBuffer.append((char) c);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (isr != null)
isr.close();
} catch (IOException e) {
e.printStackTrace();
}
mCountDownLatch.countDown();
}
}
}
-
Android 8.1 MiUi 10 Root No puedo borrar ninguna aplicación incluso con ADB SHELL con parámetro SU
– anarbus
9 sep 2020 a las 20:27
Para borrar los datos de la aplicación, intente de esta manera.
public void clearApplicationData() {
File cache = getCacheDir();
File appDir = new File(cache.getParent());
if (appDir.exists()) {
String[] children = appDir.list();
for (String s : children) {
if (!s.equals("lib")) {
deleteDir(new File(appDir, s));Log.i("TAG", "**************** File /data/data/APP_PACKAGE/" + s + " DELETED *******************");
}
}
}
}
public static boolean deleteDir(File dir) {
if (dir != null && dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
}
}
return dir.delete();
}
Para restablecer/borrar los datos de la aplicación en Android, debe verificar los paquetes disponibles instalados en su dispositivo Android.
- Ir a adb shell ejecutando
adb shell
en la terminal - Compruebe los paquetes disponibles ejecutando
pm list packages
- Si el nombre del paquete está disponible y desea restablecerlo, ejecute
pm clear packageName
reemplazando packageName con el nombre del paquete que desea restablecer, y lo mismo se muestra enpm list packages
resultado.
Si el nombre del paquete no se muestra e intentará restablecerlo, obtendrá el estado Fallido.
Pila de golpes
Para borrar el caché de todas las aplicaciones instaladas:
- usar
adb shell
para entrar en el shell del dispositivo .. - ejecuta el siguiente comando:
cmd package list packages|cut -d":" -f2|while read package ;do pm clear $package;done
Fluttydev, CEO de Umer Waqas
En Mac, puede borrar los datos de la aplicación con este comando
adb shell pm clear com.example.healitia
¿Encontró alguna solución para borrar datos para aplicaciones externas?
–Anshuman Jaiswal
19 de agosto de 2013 a las 13:16
No crea que una aplicación de terceros debería tener permiso para borrar los datos de usuario de otra aplicación. Sería un desastre si eso sucediera.
– StoneLam
22 de noviembre de 2016 a las 11:15