欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Android 中静默安装实现,android静默,静默安装原理: 1.需

来源: javaer 分享于  点击 8897 次 点评:262

Android 中静默安装实现,android静默,静默安装原理: 1.需


静默安装原理:

 1.需要获取root的操作权限 2.通过命令式的方式直接进行安装APK。在使用AndroidStudiodebug安装的时候可以看到控制台上的命令```java

import android.content.Context;import android.content.Intent;import android.content.pm.PackageManager;import android.net.Uri;import android.util.Log;

import java.io.DataOutputStream;import java.io.File;import java.io.IOException;import java.io.OutputStream;

/ * <p>名称:com.singno.VersionManager</p> * <p>描述:</p> * <pre> * APK版本管理器 * 版本检查,版本更新等 * </pre> * @author 鲍建明 * @version 2.1.0 * @date 2015/4/30/16:28 /public class VersionManager {

private static final String TAG = VersionManager.class.getName();private Context context;public VersionManager(Context context){    this.context = context;}/** * 检查版本号是否相同 * @param versionCode * @return */public boolean isSameVersion(int versionCode){    return getCurrentVersion() != versionCode ? Boolean.FALSE : Boolean.TRUE;}/** * 静默安装,安装之前必须要获取到ROOT权限 * 原理:1.先获取到ROOT权限 *  2.在通过命令的方式直接安装APK * @return */public boolean silenceInstall(File file){    Process process = null;    OutputStream out = null;    DataOutputStream dataOutputStream = null;    try {        process = Runtime.getRuntime().exec("su");        out = process.getOutputStream();        dataOutputStream = new DataOutputStream(out);        dataOutputStream.writeBytes("chmod 777 " + file.getPath() + "\n");        dataOutputStream.writeBytes("LD_LIBRARY_PATH=/vendor/lib:/system/lib pm install -r " + file.getPath());        // 提交命令        dataOutputStream.flush();        int value = process.waitFor();        if( value == 0){            return Boolean.TRUE;        }        return Boolean.FALSE;    } catch (Exception e) {        e.printStackTrace();        return Boolean.FALSE;    }finally{        try {            if( dataOutputStream != null ){                dataOutputStream.close();            }            if( out != null ){                out.close();            }        } catch (IOException e) {            e.printStackTrace();        }    }}/** * 普通的安装应用方式 * @param file  安装包文件 */public void installApk(File file){    Intent i = new Intent(Intent.ACTION_VIEW);    i.setDataAndType(Uri.parse("file://" + file.toString()), "application/vnd.android.package-archive");    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    this.context.startActivity(i);}/** * 获取服务端中的版本号 * 这个自行完成 * @return */public int getHttpVersion(){    return 0;}/** * 获取当前APK的版本号 * @return 当前APK的版本号 */public int getCurrentVersion(){    try {        return this.context.getPackageManager().getPackageInfo(this.context.getPackageName(), 0).versionCode;    } catch (PackageManager.NameNotFoundException e) {        e.printStackTrace();        Log.e(TAG, "获取版本号失败");        return 0;    }}/** * 下载APK */public void downApk(){    new Thread(new DownApk()).start();}/** * 显示下载进度提示框 */private void showDownloadDialog(){}/** * 显示软件更新提示对话框 */private void showNoticeDialog(){}/** * 下载APk的类 */class DownApk implements Runnable{    @Override    public void run() {    }}

}```

相关栏目:

用户点评