重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先,你需要知道什么是adb。adb工具即Android Debug Bridge(安卓调试桥) tools。adb可以在电脑上方便连接手机并控制手机。使用adb可以在电脑上对手机进行安装apk、执行shell命令等。
创新互联公司主营高坪网站建设的网络公司,主营网站建设方案,App定制开发,高坪h5微信小程序搭建,高坪网站营销推广欢迎高坪等地区企业咨询
所以,c#使用adb 给android安装应用程序就非常简单啦,百度下载adb(你也可以下载我上传的附件),解压adb.exe、AdbWinApi.dll和AdbWinUsbApi.dll到你的c#程序目录下,然后直接调用
Porcess.Start("adb.exe","install E:\\app.apk");//其中E:\app.apk是apk的路径
执行这个命令你的手机必须启用USB调试,有的手机还会弹窗提示。
adb工具包:
若手机总有软件自动下载安装,多是第三方软件出现问题,建议:
1.卸载最新下载的一些软件尝试。
2.备份数据(联系人、短信、照片等),恢复出厂设定尝试。
若问题依然存在,建议携带机器、购机发票、包修卡至当地的售后服务中心进行检测。
安卓手机软件可以开启服务,服务可以在后台下载软件;如果您的手机root以后,安卓手机也可以自动安装软件,又叫静默安装。应该这样来防止安卓手机的自动下载安装:1、不要随表root您的手机;如果您不是专业技术人员,很难管理root后的手机的安全。 2、安装的软件尽量用大公司开发的软件;尤其像手机助手:用百度、360、腾讯等大公司的手机助手;大公司的软件用户体验好、不会有恶意行为(有下载也会提醒您的)。 3、在不使用手机时要关闭流量和wifi,这样也可以省电哦! 4、不经常用的手机软件还是卸载了比较好,这样还能让手机运行的更快。 5、发现恶意软件,立即卸载、举报。
原理
静默安装、卸载的原理就是利用pm install命令来安装apk,pm uninstall 来卸载apk.
智能安装是利用android系统提供的无障碍服务AccessibilityService,来模拟用户点击,从而自动安装.
//静默安装
private void installSlient() {
String cmd = "pm install -r /mnt/sdcard/test.apk";
Process process = null;
DataOutputStream os = null;
BufferedReader successResult = null;
BufferedReader errorResult = null;
StringBuilder successMsg = null;
StringBuilder errorMsg = null;
try {
//静默安装需要root权限
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.write(cmd.getBytes());
os.writeBytes("\n");
os.writeBytes("exit\n");
os.flush();
//执行命令
process.waitFor();
//获取返回结果
successMsg = new StringBuilder();
errorMsg = new StringBuilder();
successResult = new BufferedReader(new InputStreamReader(process.getInputStream()));
errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String s;
while ((s = successResult.readLine()) != null) {
successMsg.append(s);
}
while ((s = errorResult.readLine()) != null) {
errorMsg.append(s);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (os != null) {
os.close();
}
if (process != null) {
process.destroy();
}
if (successResult != null) {
successResult.close();
}
if (errorResult != null) {
errorResult.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
//显示结果
tvTest.setText("成功消息:" + successMsg.toString() + "\n" + "错误消息: " + errorMsg.toString());
}