打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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 +程序包名";//静默卸载命令
程序代码:
view sourceprint?
01.import java.io.DataOutputStream;
02.import java.io.OutputStream;
03.
04.import android.app.Activity;
05.import android.os.Bundle;
06.import android.os.Environment;
07.import android.view.Menu;
08.import android.view.View;
09.import android.widget.EditText;
10./**
11.* 静默安装 卸载 Demo
12.*
13.* @author blj
14.*
15.*/
16.public class MainActivity extends Activity {
17.
18.private EditText et_packagename;
19.private String cmd_install = "pm install -r ";
20.private String cmd_uninstall = "pm uninstall ";
21.String apkLocation = Environment.getExternalStorageDirectory().toString()
22.+ "/";
23.
24.@Override
25.protected void onCreate(Bundle savedInstanceState) {
26.super.onCreate(savedInstanceState);
27.setContentView(R.layout.activity_main);
28.et_packagename = (EditText) findViewById(R.id.et_packagename);
29.}
30.
31.@Override
32.public boolean onCreateOptionsMenu(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.return true;
36.}
37.
38.public void onClick_install(View view) {
39.String cmd = cmd_install + apkLocation
40.+ et_packagename.getText().toString().trim();
41.System.out.println("静默安装命令:" + cmd);
42.excuteSuCMD(cmd);
43.}
44.
45.public void onClick_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.protected int excuteSuCMD(String cmd) {
53.try {
54.Process process = Runtime.getRuntime().exec("su");
55.DataOutputStream dos = new DataOutputStream(
56.(OutputStream) process.getOutputStream());
57.// 部分手机Root之后Library path 丢失,导入library path可解决该问题
58.dos.writeBytes((String) "export LD_LIBRARY_PATH=/vendor/lib:/system/lib
59.");
60.cmd = String.valueOf(cmd);
61.dos.writeBytes((String) (cmd + "
62."));
63.dos.flush();
64.dos.writeBytes("exit
65.");
66.dos.flush();
67.process.waitFor();
68.int result = 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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
康佳电视一键root工具及使用【详细教程讲解】
如何删除安卓系统自带软件
Root也能保修?教你清除电视盒子root痕迹
不给流氓App机会!教你一键冻结安卓后台
如何删除安卓手机内置应用?
手机恶意软件卸载方法(对个人隐私很值收藏)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服