网站建设资讯

NEWS

网站建设资讯

静默安装android,静默安装失败

Android静默安装与静默卸载(系统应用)

一.轰隆一声雳响,我闪亮登场。

成都创新互联企业建站,10多年网站建设经验,专注于网站建设技术,精于网页设计,有多年建站和网站代运营经验,设计师为客户打造网络企业风格,提供周到的建站售前咨询和贴心的售后服务。对于成都网站设计、网站建设、外贸网站建设中不同领域进行深入了解和探索,创新互联在网站建设中充分了解客户行业的需求,以灵动的思维在网页中充分展现,通过对客户行业精准市场调研,为客户提供的解决方案。

本篇基于已有系统证书(从Android设备厂家获得)的情况下实现静默安装与静默卸载,可分为三部分讲解:将apk内置为系统应用,apk静默安装与apk静默卸载。

1.将apk内置为系统应用。内置的方法有共性,也有区别。基础操作是共性,区别就在于Android4.4以上版本与Android4.4以下版本。

2.apk静默安装。

3.apk静默卸载。

二.若您觉得本文对您有帮助,记得点个关注哟~

android如何实现静默安装哦

原理

静默安装、卸载的原理就是利用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());

}

android在root权限下实现apk的静默卸载,静默安装,重启

1.静默卸载实现:

/**

* 静默卸载app

*

* @param context

* @param packageName app的包名

* @throws IOException

* @throws InterruptedException

*/

public static void uninstallApp(Context context, String packageName) throws IOException, InterruptedException {

    ListPackageInfo packageInfos = context.getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);

    for (PackageInfo packageInfo1 : packageInfos) {

        if (packageName.equals(packageInfo1.packageName)) {

            String suPath = "/system/xbin/su";

            File file = new File(suPath);

            if (!file.exists()) {

                suPath = "/system/bin/su";

            }

            Process process = Runtime.getRuntime().exec(suPath);

            String cmd = "pm uninstall " + packageName + "\n" + "exit\n";

            process.getOutputStream().write(cmd.getBytes());

            process.waitFor();

            break;

        }

    }

}

2.静默安装实现:

/**

* 静默安装app

*

* @param filePath

* @throws IOException

* @throws InterruptedException

*/

public static void installApp(String filePath) throws IOException, InterruptedException {

    String suPath = "/system/xbin/su";

    File file = new File(suPath);

    if (!file.exists()) {

        suPath = "/system/bin/su";

    }

    Process process = Runtime.getRuntime().exec(suPath);

    String cmd = "pm install -r " + filePath + "\n" + "exit\n";

    process.getOutputStream().write(cmd.getBytes());

    process.waitFor();

}

最后加上重启命令:

/**

* 重启系统

*

* @return

*/

public static boolean reboot() {

    try {

        String suPath = "/system/xbin/su";

        File file = new File(suPath);

        if (!file.exists()) {

            suPath = "/system/bin/su";

        }

        Process process = Runtime.getRuntime().exec(suPath);

        String cmd = "reboot\nexit\n";

        process.getOutputStream().write(cmd.getBytes());

        return true;

    } catch (IOException error) {

        return false;

    }

}

注意卸载和安装需要在子线程中执行;如果单纯关机则用“reboot -p”命令。

android没有root的情况下怎么实现静默安装

手机ROOT方法:\x0d\x0a1、下载安装KingRoot 电脑版\x0d\x0a2、用USB数据线连接手机Root过程中,保持手机连接PC\x0d\x0a3、按提示开始Root操作整个过程需要5-10分钟\x0d\x0a4、Root成功!\x0d\x0a\x0d\x0a注:手机ROOT之后是不在保修条约里面的,需要解除ROOT权限即可。

Android 静默安装和自启动(1、Root环境下)

各种以android硬件平台为基础的【公示屏】、【广告屏】等等,虽然很少有升级,但是不可避免的会遇到,而此类APP的使用场景,一般没人会去帮助你版本更新,点击安装,故而需要:静默安装。

1、确认安装包是否存在,并可读写

2、隐示启动:action和data的schema来控制弹出安装工具类APP,然后点击安装...

3、升级完:BootReceiver 监听到Intent.ACTION_PACKAGE_REPLACED,然后自启动

静默安装apk接口,无需开放root,也无需system权限。

Android静默安装

个人了解到的静默安装的方式有以下4种:

我看了一些第三方的应用市场,一般在设置下都会有前两种静默安装的方式可供选择,而后两种静默安装的方式主要是厂商自己的应用市场使用。

如果在7.0的系统上使用第三种静默安装的方式会出现以下错误:

参考:

Android7.0的静默安装失败问题研究

Android N 静默安装和卸载

主要步骤如下:

我试了以上两篇文章的介绍的方法,还是失败,提示Failure [null],不知道怎么破了,可能是厂商的定制问题吧。。。还在思考中。。。


分享文章:静默安装android,静默安装失败
本文来源:http://njwzjz.com/article/hoedpo.html