Android 获取Root权限之后的静默安装实现 代码示例分析&&源码下载
2017-02-28 16:36
1056 查看
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?
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
今天,总结介绍一下 获取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?
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
相关文章推荐
- Android 获取Root权限之后的静默安装实现 代码示例分析&&源码下载
- Android 获取Root权限之后的静默安装实现 代码示例分析
- Android获取Root权限之后的静默安装实现代码示例分析
- Android获取Root权限之后的静默安装实现代码示例分析
- android实现静默下载、静默安装、获取root权限并自动安装成系统APP、自启动
- Android代码实现APK的下载安装和卸载<1>
- android通过获取root权限实现静默安装、
- android通过获取root权限实现静默安装、
- Android仿今日头条和知乎等App顶部滑动导航实现代码分析及源码下载
- Android代码实现APK的下载安装和卸载<2>
- AjaxPro.NET实现TextBox智能获取服务端数据功能(Asp.net 2.0)(示例代码下载)
- AjaxPro.NET实现TextBox智能获取服务端数据功能(Asp.net 2.0)(示例代码下载)
- AjaxPro.NET实现TextBox智能获取服务端数据功能(Asp.net 2.0)(示例代码下载)
- [导入]AjaxPro.NET实现TextBox智能获取服务端数据功能(Asp.net 2.0)(示例代码下载)
- android静默安装的代码实现方法
- Control Study -> 键盘模拟鼠标(实现用键盘操作鼠标光标)(示例代码下载)
- android实现程序自动升级到安装示例分享(下载android程序安装包)
- android应用后台安装,静默安装的代码实现方法
- Android快速搭建模拟器环境另类方法(绕过了官网SDK Manager下载)和 实现静默安装与卸载应用
- apk安装法之二----一段Android实现应用下载并自动安装apk包的代码