/** * 使用代码消除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()); } }
版权声明:本文博主原创文章,博客,未经同意不得转载。
时间: 2024-10-08 09:20:30