功能说
在国内的Android生态中,所有的APP开发者都是一种流氓的心态,后台服务一大堆,还监听各种广播,导致用户根本不可能完全删除后台服务;有人说既然他们流氓,你不用他们就是,卸载掉啊!!哎,一些主流公司的APP,即使知道他流氓,还真的继续用它,比如支付宝\微信等;
所以采用冻结的方法是最有效,最干净的,只是可惜 pm disable 这个权限Android并没有对普通应用开放,也是一个蛋疼的事情.Android生态也是,申请各种权限不需要root,反而关闭权限需要;
使用冻结APP的场景:
- 某些应用开启大量后台服务,导致系统响应缓慢,再不能卸载的情况下,冻结它;
- 某些不常用的APP,但是需要的时候重新下载又麻烦,冻结它;
- 某些应用后台大量更新数据,消耗流量,冻结它;
- 冻结app解冻后,保留所有应用数据,不用担心数据丢失,账号重新登录等;
主要代码实现
冻结APP
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public void disableApp(String appPackageName){ try { Process localProcess=Runtime.getRuntime().exec("su"); String cmd="pm disable "+appPackageName+"\n"; DataOutputStream dataOutputStream=new DataOutputStream(localProcess.getOutputStream()); dataOutputStream.writeBytes(cmd); dataOutputStream.flush(); dataOutputStream.writeBytes("exit\n"); } catch (IOException e) { e.printStackTrace(); } }
|
解冻APP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public void enableApp(String appPackageName){ try { Process localProcess=Runtime.getRuntime().exec("su"); String cmd="pm enable "+appPackageName+"\n"; DataOutputStream dataOutputStream=new DataOutputStream(localProcess.getOutputStream()); dataOutputStream.writeBytes(cmd); dataOutputStream.flush(); dataOutputStream.writeBytes("exit\n"); } catch (IOException e) { e.printStackTrace(); } }
|