/** * 利用代码清除App的数据 * 平常我们在清除App的数据时,多半在设置中找到对应的App * 然后选择其清除数据.下面给出代码实现. * * 注意事项: * 1 设备需要root * 2 该示例中删除的是系统级应用 * 2 注意在命令的末尾需要加上换行\n * 这就相当于我们平时在Dos中输入命令后再换行一样. * 否则命令不会被执行. */ private void cleanData(String packageName){ try { System.out.println("---> 9527 开始清除 "+packageName); Process su= Runtime.getRuntime().exec("su"); String cmd ="rm -r "+"/data/data/"+packageName; cmd = cmd + "\n exit\n"; //以下两句代表重启设备 //String cmd ="reboot"; //cmd = cmd + "\n exit\n"; su.getOutputStream().write(cmd.getBytes()); if ((su.waitFor() != 0)) { throw new SecurityException(); } } catch (Exception e) { System.out.println("---> 9527 清除数据时 e="+e.toString()); } }
以下代码更新于:2014年8月10日00:15:36
/** * 利用代码清除App的数据 * 平常我们在清除App的数据时,多半在设置中找到对应的App * 然后选择其清除数据.下面给出代码实现. * * 在上面的一段代码中把data/data/packageName下的东西全部删除了. * 所以需要重启设备,因为它的lib都被删除了. * 在设备重启后,会自动生成新的lib该系统应用才可以正常运行. * * 为了避免重启设备,在清理数据时应该不删除lib文件夹,代码如下. * * * 注意事项: * 1 设备需要root * 2 该示例中删除的是系统级应用 * 2 注意在命令的末尾需要加上换行\n * 这就相当于我们平时在Dos中输入命令后再换行一样. * 否则命令不会被执行. */ private void cleanData(String packageName){ try { Process su= Runtime.getRuntime().exec("su"); String cmd = "cd /data/data/"+packageName+";"+"rm -r `ls|grep -v lib`"; System.out.println("------cmd="+cmd); cmd = cmd + "\n exit\n"; su.getOutputStream().write(cmd.getBytes()); if ((su.waitFor() != 0)) { throw new SecurityException(); } } catch (Exception e) { System.out.println("---> 9527 清除数据时 e="+e.toString()); } }