首页 > 系统 > Android > 正文

Android 获取Root权限之后的静默安装实现 代码示例分析&&源码下载

2019-11-06 09:34:10
字体:
来源:转载
供稿:网友

droid开发中,我们有时会遇到一些特殊功能的实现,有些功能并没有太高技术难度,但是如果之前没有接触过就需要花好多时间去研究解决。

今天,总结介绍一下 获取Root权限之后的静默安装和进门卸载功能的实现。

众所周知,Android的手机在获取Root权限之后几乎可以进行你想要的任何操作,而静默安装便是其中比较常见的一个需求:

豌豆荚、360手机助手等应用下载软件一般都有一个应用一键自动更新功能,一键批量卸载软件,他们是如何实现的呢?

一般这类软件,实现自动更新功能都需要请求root权限,在被授予了root权限后便可批量安装卸载软件,其实,这个并没有太高难度,其过程就是一个获取了Root权限之后的静默安装和卸载:

下面直接上代码:

注:

静默安装和卸载的shell 命令格式分别为:

 PRivate String cmd_install = "pm install -r +安装apk包路径";//静默安装命令 private String cmd_uninstall = "pm uninstall +程序包名";//静默卸载命令

程序代码:

[java] view plain copy print?在CODE上查看代码片import java.io.DataOutputStream;  import java.io.OutputStream;    import android.app.Activity;  import android.os.Bundle;  import android.os.Environment;  import android.view.Menu;  import android.view.View;  import android.widget.EditText;  /**  * 静默安装 卸载 Demo  *   * @author blj  *   */  public class MainActivity extends Activity {        private EditText et_packagename;      private String cmd_install = "pm install -r ";      private String cmd_uninstall = "pm uninstall ";      String apkLocation = Environment.getExternalStorageDirectory().toString()              + "/";        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);          et_packagename = (EditText) findViewById(R.id.et_packagename);      }        @Override      public boolean onCreateOptionsMenu(Menu menu) {          // Inflate the menu; this adds items to the action bar if it is present.          getMenuInflater().inflate(R.menu.main, menu);          return true;      }        public void onClick_install(View view) {          String cmd = cmd_install + apkLocation                  + et_packagename.getText().toString().trim();          System.out.println("静默安装命令:" + cmd);          excuteSuCMD(cmd);      }        public void onClick_uninstall(View view) {          String cmd = cmd_uninstall + et_packagename.getText().toString().trim();          // String cmd = cmd_uninstall + "com.kingsoft.website";          System.out.println("静默卸载命令:" + cmd);          excuteSuCMD(cmd);      }          //执行shell命令      protected int excuteSuCMD(String cmd) {          try {              Process process = Runtime.getRuntime().exec("su");              DataOutputStream dos = new DataOutputStream(                      (OutputStream) process.getOutputStream());              // 部分手机Root之后Library path 丢失,导入library path可解决该问题              dos.writeBytes((String) "export LD_LIBRARY_PATH=/vendor/lib:/system/lib/n");              cmd = String.valueOf(cmd);              dos.writeBytes((String) (cmd + "/n"));              dos.flush();              dos.writeBytes("exit/n");              dos.flush();              process.waitFor();              int result = process.exitValue();              return (Integer) result;          } catch (Exception localException) {              localException.printStackTrace();              return -1;          }      }    }  

软件运行截图:(以金山网址大全为例)

静默安装截图:

其中king.apk为安装apk文件名,安装其他apk时在框中输入相应文件名即可。

点击静默安装即可静默安装应用。

静默卸载截图:

其中com.kingsoft.website为金山网址大全程序的包名,

点击静默卸载,即可静默卸载应用。

本文介绍了静默安装的代码实现,回到豌豆荚和360一键安装、卸载软件,他们的实现方式 也就是监测apk安装包下载完成后执行上面介绍的静默安装命令,一键卸载应该就是将要卸载的程序的包名放到for循环依次执行中自动卸载。

附:静默安装静默卸载 完整代码示例下载链接:

静默安装静默卸载详解SilentInstallDemo.rar

金山网址大全apk下载链接

免积分下载请到我的gihub:

https://github.com/bailiangjin/TestSu


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表