studio quitar publicidad programacion móviles eliminar desarrollo curso como cache borrar aplicaciones anuncios android adb user-data

quitar - programacion android pdf 2018



Borrar datos de usuario de aplicaciones de Android (8)

El comando pm clear com.android.browser requiere permiso de root.
Entonces, ejecute 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(); } } }

Usar adb shell para 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(); }

Problema:

No borra los datos del usuario ni ofrece ninguna excepción, aunque he otorgado el siguiente permiso.

<uses-permission android:name="android.permission.CLEAR_APP_USER_DATA"/>

Pregunta:

¿Cómo borrar los datos de la aplicación usando adb shell ?


Este comando funcionó para mí:

adb shell pm clear packageName


Hola UdayaLakmal,

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 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(); } }

Por favor revisa esto y avísame ...

Puede descargar el código desde here


Los datos de la aplicación Afaik the Browser NO se pueden eliminar para otras aplicaciones, ya que se almacenan en private_mode . Por lo tanto, la ejecución de este comando podría probablemente solo funcionar en dispositivos rooteados. De lo contrario, deberías probar otro enfoque.


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 &amp;&amp; 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(); }


Si desea hacerlo manualmente, también puede borrar sus datos de usuario haciendo clic en el botón “Clear Data” en Settings–>Applications–>Manage Aplications–> SU APLICACIÓN

or Is there any other way to do that?

A continuación, descargue el código aquí


adb uninstall com.package.packagename

ejecuta este comando en el shell ADB.

adb uninstall com.package.packagename -k

-k retendrá los datos del usuario


// To delete all the folders and files within folders recursively File sdDir = new File(sdPath); if(sdDir.exists()) deleteRecursive(sdDir); // Delete any folder on a device if exists void deleteRecursive(File fileOrDirectory) { if (fileOrDirectory.isDirectory()) for (File child : fileOrDirectory.listFiles()) deleteRecursive(child); fileOrDirectory.delete(); }