Android 中静默安装实现
发布时间:2020-12-14 23:24:32 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 ????2.通过命令式的方式直接进行安装APK。在使用 Android Studio debug安装的时候可以看到控制台上的命令 import android.content.Context;import and
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考
????2.通过命令式的方式直接进行安装APK。在使用 Android Studio debug安装的时候可以看到控制台上的命令
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() { } } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |