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. try {
  18. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  19. int read = -1;
  20. process = processBuilder.start();
  21. errIs = process.getErrorStream();
  22. while ((read = errIs.read()) != -1) {
  23. baos.write(read);
  24. }
  25. baos.write("/n".getBytes());
  26. inIs = process.getInputStream();
  27. while ((read = inIs.read()) != -1) {
  28. baos.write(read);
  29. }
  30. byte[] data = baos.toByteArray();
  31. result = new String(data);
  32. } catch (IOException e) {
  33. e.printStackTrace();
  34. } catch (Exception e) {
  35. e.printStackTrace();
  36. } finally {
  37. try {
  38. if (errIs != null) {
  39. errIs.close();
  40. }
  41. if (inIs != null) {
  42. inIs.close();
  43. }
  44. } catch (IOException e) {
  45. e.printStackTrace();
  46. }
  47. if (process != null) {
  48. process.destroy();
  49. }
  50. }
  51. return result;
  52. }

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

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。

时间: 2024-08-24 09:49:58

apk 静默安装的相关文章

APP流氓大法之apk 静默安装

老大要我弄个自动更新,要用到静默安装,网上找到了些大拿的代码,我拿去改吧改吧,先贴出来: Java代码   /** * 软件静默安装 * @param apkAbsolutePath apk文件所在路径 * @return 安装结果:获取到的result值<br> * * 如果安装成功的话是“ * pkg: /data/local/tmp/Calculator.apk  /nSuccess”,<br> * 如果是失败的话,则没有结尾的“Success”. */ public Str

Android 无需root实现apk的静默安装

转载请注明出处:http://blog.csdn.net/yyh352091626/article/details/50533137 Android的静默安装似乎是一个很有趣很诱人的东西,但是,用普通做法,如果手机没有root权限的话,似乎很难实现静默安装,因为Android并不提供显示的Intent调用,一般是通过以下方式安装apk: Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFi

Android随笔之——静默安装、卸载

随笔之所以叫随笔,就是太随意了,说起来,之前的闹钟系列随笔还没写完,争取在十月结束之前找时间把它给写了吧.今天要讲的Android APK的静默安装.卸载.网上关于静默卸载的教程有很多,更有说要调用隐藏API,在源码下用MM命令编译生成APK的,反正我能力有限,没一一研究过,这里选择一种我试验成功的来讲. 静默安装.卸载的好处就是你可以偷偷摸摸,干点坏事什么的,哈哈~ 一.准备工作 要实现静默安装.卸载,首先你要有root权限,能把你的静默安装.卸载程序移动到system/app目录下. 1.用

Android静默安装及开机自启的简单实现

写在前面 [apk静默安装]是android应用的一个重要功能,一般用在app自动更新等方面.静默安装在android里面是指不需要界面或用户参与的app安装动作,且需要系统已获root权限.安装完成后一般通过接收广播的方式启动App服务. [app自启动]是常用功能,一般通过接收系统启动广播实现. 正文 1.被执行安装 app: a. 自定义权限 <permission android:name="app.permission.install" android:protecti

Android下实现静默安装指定APK

什么是静默安装?既是可以在不提示用户的情况下,进行APK的安装. 有的时候,根据业务需求,需要实现静默安装APK,但是Android提供的安装接口是需要提示用户的前提下安装. 以下提供一个静默安装的解决方案(通过执行命令行的方式实现,需ROOT权限): new Thread() { public void run() { Process process = null; OutputStream out = null; InputStream in = null; try { // 请求root

Android apk的安装、卸载、更新升级(通过Eclipse实现静默安装)

一.通过Intent消息机制发送消息,调用系统应用进行,实现apk的安装/卸载 . (1) 调用系统的安装应用,让系统自动进行apk的安装 String fileName = "/data/data/com.zlc.ipanel.operate/FileOperate.apk";  Uri uri = Uri.fromFile(new File(fileName));  Intent intent = new Intent(Intent.ACTION_VIEW);  intent.se

静默安装apk的方法--Android是否可以实现静默安装模式

只对于能看懂能编译安卓源码的兄弟们: pakcagemanagerservice.java中三个installpackage打头的函数 最后一个函数第一行代码就是检查这个PERMISSION,去掉就可以了. 但是您不能直接去掉原来的函数里面的代码,您可以自行添加一个API,函数和installpackage里面的一样,差别就是少了检查PERMISSION这行 下面这个文章有点老了 (1)在网上搜寻该问题的解决方法,且查阅android开发文档,没有发现可以实现该功能的显示API调用,网络上很多人

如何实现APK的静默安装

Android上的静默安装是个很诱人的功能,但是Android系统的安全策略要求任何应用在安装时应该提示APK安装包的权限,仅仅只对于一些内置特定厂商应用,可以跳过安装过程的信息加快安装,或者运营商强制安装.如果安装一个普通的APK也想实现静默安装,那么应该怎么办呢? Android系统主控应用程序安装的是PackageManager,我们平时在安卓手机上看到的安装界面是系统自带的PackageInstaller.apk为我们提供的.这里实现静默安装的思路是通过修改这个APK中显示安装界面的部分

Android 静默安装Apk

参考链接 android 静默安装 [Android]实现静默安装APK的两种方法