zoukankan      html  css  js  c++  java
  • APP流氓大法之apk 静默安装

    老大要我弄个自动更新,要用到静默安装,网上找到了些大拿的代码,我拿去改吧改吧,先贴出来:

    Java代码  收藏代码
    1. /** 
    2.      * 软件静默安装 
    3.      * @param apkAbsolutePath apk文件所在路径 
    4.      * @return 安装结果:获取到的result值<br> 
    5.      *  
    6.      * 如果安装成功的话是“ 
    7.      * pkg: /data/local/tmp/Calculator.apk  /nSuccess”,<br> 
    8.      * 如果是失败的话,则没有结尾的“Success”。 
    9.      */  
    10.     public String silentInstall(String apkAbsolutePath) {  
    11.         String[] args = { "pm", "install", "-r", apkAbsolutePath };  
    12.         String result = "";  
    13.         ProcessBuilder processBuilder = new ProcessBuilder(args);  
    14.         Process process = null;  
    15.         InputStream errIs = null;  
    16.         InputStream inIs = null;  
    17.   
    18.         try {  
    19.             ByteArrayOutputStream baos = new ByteArrayOutputStream();  
    20.             int read = -1;  
    21.             process = processBuilder.start();  
    22.             errIs = process.getErrorStream();  
    23.   
    24.             while ((read = errIs.read()) != -1) {  
    25.                 baos.write(read);  
    26.             }  
    27.   
    28.             baos.write("/n".getBytes());  
    29.             inIs = process.getInputStream();  
    30.   
    31.             while ((read = inIs.read()) != -1) {  
    32.                 baos.write(read);  
    33.             }  
    34.   
    35.             byte[] data = baos.toByteArray();  
    36.             result = new String(data);  
    37.         } catch (IOException e) {  
    38.             e.printStackTrace();  
    39.         } catch (Exception e) {  
    40.             e.printStackTrace();  
    41.         } finally {  
    42.             try {  
    43.                 if (errIs != null) {  
    44.                     errIs.close();  
    45.                 }  
    46.                 if (inIs != null) {  
    47.                     inIs.close();  
    48.                 }  
    49.             } catch (IOException e) {  
    50.                 e.printStackTrace();  
    51.             }  
    52.             if (process != null) {  
    53.                 process.destroy();  
    54.             }  
    55.         }  
    56.         return result;  
    57.     }  

    别急,没完,记得加权限呢:

    Java代码  收藏代码
    1. <!-- 以下是静默安装apk所需要到权限 -->  
    2.     <uses-permission android:name="android.permission.INSTALL_PACKAGES" />  
    3.     <uses-permission android:name="android.permission.DELETE_PACKAGES" />  
    4.     <uses-permission android:name="android.permission.CLEAR_APP_CACHE" />  
    5.     <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />  
    6.     <uses-permission android:name="android.permission.READ_PHONE_STATE" />  

    我粘贴过去,哇靠,好多红茶茶~怎么回事,鼠标移上去一看,

    Java代码  收藏代码
    1. permission is only granted to system apps   

     奇怪类,我这个就是系统应用阿~~找了好久,听见有个声音说要clean下,于是,我clean了一下,

    挖靠!@果然没有红茶茶类~后来不知怎么改了下mainfest,又红茶茶类,我又clean了一下,竟然还有用!所以,以后出错了记得先clean下哦。当然,你要是布局文件有错到话那就没办法了,你需要先让布局文件到错误消失掉才能clean。

  • 相关阅读:
    Vue学习笔记vueelementadmin 前端学习
    Vue学习笔记Vue.js2.X 学习(三)===>组件化高级
    Vue学习笔记rest_framework_jwt 学习
    Vue学习笔记Django REST framework3后端接口API学习
    Vue学习笔记Vue.js2.X 学习(一)===>基本知识学习
    Vue学习笔记Vue.js2.X 学习(二)===>组件化开发
    Vue学习笔记Windows系统Git安装(按装vueelementadmin报错)
    跑马灯
    使用信号量的线程同步实验
    按键盘数码管显示实验
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/4126060.html
Copyright © 2011-2022 走看看