Android 中静默安装实现
发布时间:2020-05-24 20:33:11 所属栏目:Java 来源:互联网
导读:Android 中静默安装实现
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 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() {
}
}
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
