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

简介: /** * 利用代码清除App的数据 * 平常我们在清除App的数据时,多半在设置中找到对应的App * 然后选择其清除数据.下面给出代码实现.
	/**
	 * 利用代码清除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());
		}
		
	}


相关文章
|
27天前
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
107 4
|
1月前
|
JavaScript C++ 容器
【Azure Bot Service】部署NodeJS ChatBot代码到App Service中无法自动启动
2024-11-12T12:22:40.366223350Z Error: Cannot find module 'dotenv' 2024-11-12T12:40:12.538120729Z Error: Cannot find module 'restify' 2024-11-12T12:48:13.348529900Z Error: Cannot find module 'lodash'
42 11
|
2月前
|
机器人 Shell Linux
【Azure Bot Service】部署Python ChatBot代码到App Service中
本文介绍了使用Python编写的ChatBot在部署到Azure App Service时遇到的问题及解决方案。主要问题是应用启动失败,错误信息为“Failed to find attribute 'app' in 'app'”。解决步骤包括:1) 修改`app.py`文件,添加`init_func`函数;2) 配置`config.py`,添加与Azure Bot Service认证相关的配置项;3) 设置App Service的启动命令为`python3 -m aiohttp.web -H 0.0.0.0 -P 8000 app:init_func`。
|
2月前
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
32 1
|
2月前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异:从代码到用户体验
【10月更文挑战第5天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。它们在技术架构、开发环境及用户体验上有着根本的不同。本文通过比较这两种平台的开发过程,揭示背后的设计理念和技术选择如何影响最终产品。我们将深入探讨各自平台的代码示例,理解开发者面临的挑战,以及这些差异如何塑造用户的日常体验。
|
2月前
|
存储 大数据 数据库
Android经典面试题之Intent传递数据大小为什么限制是1M?
在 Android 中,使用 Intent 传递数据时存在约 1MB 的大小限制,这是由于 Binder 机制的事务缓冲区限制、Intent 的设计初衷以及内存消耗和性能问题所致。推荐使用文件存储、SharedPreferences、数据库存储或 ContentProvider 等方式传递大数据。
88 0
|
3月前
|
存储 Java Android开发
🔥Android开发大神揭秘:从菜鸟到高手,你的代码为何总是慢人一步?💻
在Android开发中,每位开发者都渴望应用响应迅速、体验流畅。然而,代码执行缓慢却是常见问题。本文将跟随一位大神的脚步,剖析三大典型案例:主线程阻塞导致卡顿、内存泄漏引发性能下降及不合理布局引起的渲染问题,并提供优化方案。通过学习这些技巧,你将能够显著提升应用性能,从新手蜕变为高手。
35 2
|
4月前
|
JSON JavaScript 前端开发
Android调用Vue中的JavaScript代码
Android调用Vue中的JavaScript代码
50 3
|
4月前
|
Android开发
基于Amlogic 安卓9.0, 驱动简说(四):Platform平台驱动,驱动与设备的分离
本文介绍了如何在基于Amlogic T972的Android 9.0系统上使用Platform平台驱动框架和设备树(DTS),实现设备与驱动的分离,并通过静态枚举在设备树中描述设备,自动触发驱动程序的加载和设备创建。
80 0
基于Amlogic 安卓9.0, 驱动简说(四):Platform平台驱动,驱动与设备的分离
|
4月前
|
Android开发 C语言
基于Amlogic 安卓9.0, 驱动简说(二):字符设备驱动,自动创建设备
这篇文章是关于如何在基于Amlogic T972的Android 9.0系统上,通过自动分配设备号和自动创建设备节点文件的方式,开发字符设备驱动程序的教程。
75 0
基于Amlogic 安卓9.0, 驱动简说(二):字符设备驱动,自动创建设备
下一篇
DataWorks