欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android下载 文件(APP) 并且静默安装

程序员文章站 2022-04-14 11:21:27
1 . 基于Android7.0 有系统签名才能静默安装直接上代码下载文件 /** *下载文件 *这里我是用的子线程 **/ public void DownApkorSysrom( final String loadApkUrl ,final String savePath,final String saveFileName){ Thread thread=new Thread(new Runnable() {...

1 . 基于Android7.0 有系统签名才能静默安装

直接上代码

下载文件

 /**
     *下载文件
     *这里我是用的子线程
     **/
    public  void DownApkorSysrom( final  String  loadApkUrl ,final String savePath,final String saveFileName){
        Thread thread=new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    URL url = new URL(loadApkUrl);
                    Log.i(TAG,"updateManager download file url:"+loadApkUrl);
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    conn.connect();
                    int length = conn.getContentLength();
                    InputStream is = conn.getInputStream();
                    File file;
                    String filename;
                    File downFile;
                        file = new File(savePath);
                        if (!file.exists()) {
                            file.mkdir();
                        }
                        filename = saveFileName;
                        downFile = new File(file,filename);
                  

                    FileOutputStream fos = new FileOutputStream(downFile);
                    int count = 0;
                    byte buf[] = new byte[1024];
                    do {
                        int numread = is.read(buf);
                        count += numread;
                        // 更新进度
                        int  progress = (int) (((float) count / length) * 100);
                        Log.i(TAG,"down load progress:"+progress+" numread:"+numread);
                        if (numread <= 0) {
                           // 下载完成通知安装
                            apkInstall(savePath+saveFileName);
                            break;
                        }
                        fos.write(buf, 0, numread);
                    } while (true);// 点击取消就停止下载.
                } catch (MalformedURLException e) {
                   Log.i(TAG,"down load MalformedURLException:"+e.toString());
                    e.printStackTrace();
                } catch (IOException e) {
                   Log.i(TAG,"down load IOException TTTT:"+e.toString());
                    e.printStackTrace();
                }
            }
        });
        thread.start();
    }

2 . 静默安装

 /**
     * 执行命令并且输出结果
     */
    public  boolean apkInstall(String path) {
        Log.d(TAG,"SilentInstallActivity path:"+path);
        Process p=null;
        int value=-1;
        try {
            String docmd = "pm install -r -i com.amtcloud.amtphoneagent  --user 0 " +path;
              p = Runtime.getRuntime().exec(docmd);
             value = p.waitFor();
        }catch (Exception e) {
            Log.d(TAG, "SilentInstallActivity error: " + e);
        }finally {
            if(p!=null){
                p.destroy();
            }
        }
        return returnResult(value);
    }

3 监听安装完成广播

public class SilenceInstallReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // 接收安装广播
        if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")||
                intent.getAction().equals("android.intent.action.PACKAGE_REPLACED")) {
//            startApp("com.amtzhmt.launcher",context);
            Toast.makeText(context, "安装完成", Toast.LENGTH_LONG).show();

        }
    }
    public void startApp(String appPackageName,Context context){
        try{
            Intent intent = context.getPackageManager().getLaunchIntentForPackage(appPackageName);
            context.startActivity(intent);
        }catch(Exception e){
            Toast.makeText(context, "安装完成自启失败", Toast.LENGTH_LONG).show();
        }
    }
}

 

本文地址:https://blog.csdn.net/qq_33023933/article/details/107937305

相关标签: Android