您的位置:首页 > 移动开发 > Android开发

Android利用代码清除App的数据和重启设备

2014-07-22 19:55 239 查看
/**
* 利用代码清除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());
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: