android 清除其他应用数据
2015-04-08 10:30
369 查看
在调试某应用的时候,经常要清除apk初始化产生的数据,初始化会在/data/data/com.xxx.xx目录下和/sdcard/下新建很多文件,每次都要点到 设置->应用->软件名->清除数据。闲操作麻烦,想使用自动化一键清除。
0x1 穷举遍历删除文件夹
效果还行,使用穷举遍历文件夹名进行删除,虽说效率低下 起码想要的功能实现了
0x2 使用pm 命令删除
0x1 穷举遍历删除文件夹
开始想到的是获取su权限后枚举/data/data/com.xx.xx目录下的文件夹,逐个删除文件夹
public static boolean removeAppData( String packageName ) { File file = new File( "/data/data/" + packageName ); System.out.println( "包名为:" + packageName ); if ( file.exists( ) ) { DataOutputStream os = null; DataInputStream is = null; DataInputStream es = null; BufferedReader buf = null; Process p = null; try { p = Runtime.getRuntime( ).exec( "su" );// 获得root权限 os = new DataOutputStream( p.getOutputStream( ) ); // is = new DataInputStream( p.getInputStream( ) ); buf = new BufferedReader( new InputStreamReader( p.getInputStream( ) ) ); es = new DataInputStream( p.getErrorStream( ) ); os.writeBytes( "ls /data/data/" + packageName + "/ \n" ); os.flush( ); List< String > list = new ArrayList< String >( ); list.add( "cache" ); list.add( "databases" ); list.add( "files" ); list.add( "shared_prefs" ); for ( int i = 0; i < list.size( ); i++ ) { os.writeBytes( "rm -f -r /data/data/" + packageName + "/" + ( String ) list.get( i ) + " \n" );// 删除文件和文件夹 System.out.println( "遍历 " + ( String ) list.get( i ) ); os.flush( ); } os.flush( ); os.writeBytes( "exit\n" ); os.flush( ); os.close( ); p.destroy( ); } catch ( IOException e ) { try { os.close( ); is.close( ); } catch ( IOException e1 ) { e1.printStackTrace( ); } p.destroy( ); } return true; } else { return false; } }
效果还行,使用穷举遍历文件夹名进行删除,虽说效率低下 起码想要的功能实现了
0x2 使用pm 命令删除
无意在google看到某文章(研究删除数据到底会删除那些文件/夹)所使用的pm clear命令,尝试修改之后发现瞬间高大上!!!
try { p = Runtime.getRuntime( ).exec( "su" ); os = new DataOutputStream( p.getOutputStream( ) ); is = new DataInputStream( p.getInputStream( ) ); os.writeBytes( "pm clear " + packageName + " \n" ); os.flush( ); os.writeBytes( "echo test \n" );// 回显test 并获得test,确保上面的代码已经执行 os.flush( ); String result = is.readLine( ); os.writeBytes( "exit\n" ); os.flush( ); os.close( ); p.destroy( ); } catch ( IOException e ) { e.printStackTrace( ); }
相关文章推荐
- android 清除data/data/ 下其他应用的数据
- Android一键清除其他应用缓存数据,有没有什么好方法?
- android 中清除应用的数据会清除哪些数据
- android退出应用时候清除数据
- android 设置中清除数据 重启应用
- Android一键清除某个应用下的数据
- (原创)Android 清除第三方应用的数据缓存实现(包括清除系统应用缓存)
- Android O :清除应用数据
- Android应用的私有数据被其他应用访问
- Android应用相关文件目录、清除数据和缓存的介绍
- Android应用自定义User Data管理(将Settings下的"清除数据"变成"管理空间")
- Android存储扩展学习-----应用的清除数据和清除缓存
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- android实现 彻底退出应用/清除数据/卸载应用的方法
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- 适用于android自动化测试中的命令行清除应用数据与缓存
- android学习(十) 从其他应用接收简单数据
- android打开其他应用的activity并返回数据
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- android 应用间共享数据,调用其他app数据资源