Android获取Root权限之后的静默安装实现代码示例分析
-
Adroid开发中,我们有时会遇到一些特殊功能的实现,有些功能并没有太高技术难度,但是如果之前没有接触过就需要花好多时间去研究解决。
今天,总结介绍一下 获取Root权限之后的静默安装和进门卸载功能的实现。
众所周知,Android的手机在获取Root权限之后几乎可以进行你想要的任何操作,而静默安装便是其中比较常见的一个需求:
豌豆荚、360手机助手等应用下载软件一般都有一个应用一键自动更新功能,一键批量卸载软件,他们是如何实现的呢?
一般这类软件,实现自动更新功能都需要请求root权限,在被授予了root权限后便可批量安装卸载软件,其实,这个并没有太高难度,其过程就是一个获取了Root权限之后的静默安装和卸载:
下面直接上代码:
注:
静默安装和卸载的shell 命令格式分别为:
private String cmd_install = "pm install -r +安装apk包路径";//静默安装命令
private String cmd_uninstall = "pm uninstall +程序包名";//静默卸载命令程序代码:
01.importjava.io.DataOutputStream;02.importjava.io.OutputStream;03.04.importandroid.app.Activity;05.importandroid.os.Bundle;06.importandroid.os.Environment;07.importandroid.view.Menu;08.importandroid.view.View;09.importandroid.widget.EditText;10./**11.* 静默安装 卸载 Demo12.*13.* @author blj14.*15.*/16.publicclassMainActivityextendsActivity {17.18.privateEditText et_packagename;19.privateString cmd_install ="pm install -r ";20.privateString cmd_uninstall ="pm uninstall ";21.String apkLocation = Environment.getExternalStorageDirectory().toString()22.+"/";23.24.@Override25.protectedvoidonCreate(Bundle savedInstanceState) {26.super.onCreate(savedInstanceState);27.setContentView(R.layout.activity_main);28.et_packagename = (EditText) findViewById(R.id.et_packagename);29.}30.31.@Override32.publicbooleanonCreateOptionsMenu(Menu menu) {33.// Inflate the menu; this adds items to the action bar if it is present.34.getMenuInflater().inflate(R.menu.main, menu);35.returntrue;36.}37.38.publicvoidonClick_install(View view) {39.String cmd = cmd_install + apkLocation40.+ et_packagename.getText().toString().trim();41.System.out.println("静默安装命令:"+ cmd);42.excuteSuCMD(cmd);43.}44.45.publicvoidonClick_uninstall(View view) {46.String cmd = cmd_uninstall + et_packagename.getText().toString().trim();47.// String cmd = cmd_uninstall + "com.kingsoft.website";48.System.out.println("静默卸载命令:"+ cmd);49.excuteSuCMD(cmd);50.}51.//执行shell命令52.protectedintexcuteSuCMD(String cmd) {53.try{54.Process process = Runtime.getRuntime().exec("su");55.DataOutputStream dos =newDataOutputStream(56.(OutputStream) process.getOutputStream());57.// 部分手机Root之后Library path 丢失,导入library path可解决该问题58.dos.writeBytes((String) "export LD_LIBRARY_PATH=/vendor/lib:/system/lib59.");60.cmd = String.valueOf(cmd);61.dos.writeBytes((String) (cmd + "62."));63.dos.flush();64.dos.writeBytes("exit65.");66.dos.flush();67.process.waitFor();68.intresult = process.exitValue();69.return(Integer) result;70.}catch(Exception localException) {71.localException.printStackTrace();72.return-1;73.}74.}75.76.}软件运行截图:(以金山网址大全为例)
静默安装截图:
其中king.apk为安装apk文件名,安装其他apk时在框中输入相应文件名即可。
点击静默安装即可静默安装应用。

静默卸载截图:
其中com.kingsoft.website为金山网址大全程序的包名,
点击静默卸载,即可静默卸载应用。

本文介绍了静默安装的代码实现,回到豌豆荚和360一键安装、卸载软件,他们的实现方式 也就是监测apk安装包下载完成后执行上面介绍的静默安装命令,一键卸载应该就是将要卸载的程序的包名放到for循环依次执行中自动卸载。
http://www.it165.net/uploadfile/files/2014/0222/SilentInstallDemo.rar
本文介绍了一种在Android设备获得Root权限后实现静默安装和卸载应用程序的方法。通过执行特定Shell命令,可以在后台无声地完成应用的安装与卸载过程。

被折叠的 条评论
为什么被折叠?



