原文链接:http://blog.csdn.net/annkie/article/details/8150807

为了实现将第三方apk内置在assets资源目录下,再进行安装的目的。

首先将需要安装的apk复制到assets目录下,后缀名改为.mp3或其他免压缩的格式。

测试代码如下:

[java] view plaincopy
  1. public class MainActivity extends Activity
  2. {
  3. private static final String TAG = "ExtractIconFromApk";
  4. public void onCreate(Bundle savedInstanceState)
  5. {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.activity_main);
  8. AssetManager assets = getAssets();
  9. try
  10. {
  11. //获取assets资源目录下的himarket.mp3,实际上是himarket.apk,为了避免被编译压缩,修改后缀名。
  12. InputStream stream = assets.open("himarket.mp3");
  13. if(stream==null)
  14. {
  15. Log.v(TAG,"no file");
  16. return;
  17. }
  18. String folder = "/mnt/sdcard/sm/";
  19. File f=new File(folder);
  20. if(!f.exists())
  21. {
  22. f.mkdir();
  23. }
  24. String apkPath = "/mnt/sdcard/sm/test.apk";
  25. File file = new File(apkPath);
  26. //创建apk文件
  27. file.createNewFile();
  28. //将资源中的文件重写到sdcard中
  29. //<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  30. writeStreamToFile(stream, file);
  31. //安装apk
  32. //<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
  33. installApk(apkPath);
  34. }
  35. catch (IOException e)
  36. {
  37. // TODO Auto-generated catch block
  38. e.printStackTrace();
  39. }
  40. }
  41. private void writeStreamToFile(InputStream stream, File file)
  42. {
  43. try
  44. {
  45. //
  46. OutputStream output = null;
  47. try
  48. {
  49. output = new FileOutputStream(file);
  50. }
  51. catch (FileNotFoundException e1)
  52. {
  53. // TODO Auto-generated catch block
  54. e1.printStackTrace();
  55. }
  56. try
  57. {
  58. try
  59. {
  60. final byte[] buffer = new byte[1024];
  61. int read;
  62. while ((read = stream.read(buffer)) != -1)
  63. output.write(buffer, 0, read);
  64. output.flush();
  65. }
  66. finally
  67. {
  68. output.close();
  69. }
  70. }
  71. catch (Exception e)
  72. {
  73. e.printStackTrace();
  74. }
  75. }
  76. finally
  77. {
  78. try
  79. {
  80. stream.close();
  81. }
  82. catch (IOException e)
  83. {
  84. // TODO Auto-generated catch block
  85. e.printStackTrace();
  86. }
  87. }
  88. }
  89. private void installApk(String apkPath)
  90. {
  91. Log.v(TAG,apkPath);
  92. Intent intent = new Intent(Intent.ACTION_VIEW);
  93. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  94. intent.setDataAndType(Uri.fromFile(new File(apkPath)),
  95. "application/vnd.android.package-archive");
  96. startActivity(intent);
  97. }

Android:从assets资源目录下安装apk相关推荐

  1. android assets目录下资源,Android之assets资源目录的各种操作

    既然是要对assets资源目录操作.首先来解释下assets是啥? Android 中资源分为两种, ①.第一种是res下可编译的资源文件,这种资源文件系统会在R.java里面自动生成该资源文件的ID ...

  2. teraterm乱码linux,[Unity3D][转] 关于Assets资源目录结构管理

    分享个我们项目常用的目录结构,微调过很多次,最终到了这个版本.个人认为这种管理资源方式是不错的.欢迎探讨各个细节~ 更新于2013.5.30 Asserts --Editor 自写的灵活方便插件 -- ...

  3. android 读取assets文件夹下的文件资源

    今天,简单讲讲如何读取assets文件夹下的文件. Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.Java里面自动生成该资源文件的ID ...

  4. Android 4.0.4系统下实现apk的静默安装和启动

    转自http://www.linuxidc.com/Linux/2013-02/79403.htm 未亲测 最近在Android 4.0.4系统下实现apk的静默安装和启动的功能,这里和大家分享一下, ...

  5. 使用拷贝的方式(adb push) 绕过Android系统和adb install直接安装APK

    某些情况下定制的Android系统为了限制用户安装应用,例如电视盒子,车载中控等,通过修改代码屏蔽了正常安装应用的方式 本文探讨如何在 adb shell 具有读写data分区目录的权限前提下,通过a ...

  6. 【Unity编辑器扩展】显示资源目录下所有文件所占内存大小

    此编辑器扩展工具脚本主要是显示资源目录下所有文件所占存储空间的大小,实际意义不大,的那是在实际开发过程中我们可以通过对各个模块文件大小的了解更好的分配我们的资源 快捷键 Alt+K 可以打开或者隐藏 ...

  7. 在 Java 中,如何批量读取本项目资源目录下的所有文件

    在 Java 中,如何批量读取本项目资源目录下的所有文件 读取资源目录下的指定文件 方法 1:使用 JDK 中原始 API 方法 2:借助 Spring 附录 将 InputStream 转化为 by ...

  8. android studio moudel,Android Studio 添加其他目录下的module

    Android Studio 添加其他目录下的module admin • 2020 年 11 月 07 日 [title]需要操作的原因[/title] 在我们写程序的时候,经常会因为重复性的代码而 ...

  9. linux 找不到g09,科学网—如何在非用户目录下安装高斯 g09 - 陈照强的博文

    在终端中输入:echo $GAUSS_SCRDIR看看是空的还是有路径 如果是空的,那么就说明你没设置这个变量,这样的话临时文件会写在和输入输出文件相同的目录下.如果你设置了这个变量,那么请保证你设置 ...

最新文章

  1. ORB-SLAM论文翻译
  2. 51CTO博客弹出框精彩博文记录【2013年第二季度】
  3. 域控制器活动目录之备份与恢复
  4. 神奇的HyperLogLog算法
  5. each,collect map collect! map!
  6. 嵌套查询和连接查询的效率_Elasticsearch 7.x Nested 嵌套类型查询 | ES 干货
  7. 分离整数的各个数(信息学奥赛一本通-T1088)
  8. Java—List集合详解
  9. [Android]Thread线程入门3--多线程
  10. 计算机rank函数怎么用积分排名,excelrank函数积分排名
  11. Android菜鸟成长记1--环境的搭配和第一个项目的构建
  12. 阿里云端安装mysql
  13. 转换成XmlDocument
  14. 超简单的Matlab附加功能安装包的安装方法
  15. QListView拖动排序
  16. tuio+ 图片拼接软件制作方法
  17. 软考每日一练||网络工程师
  18. Unity学习笔记1 锁定摄像机镜头跟随角色移动
  19. Java 社区平台 - Sym 1.7.0 发布
  20. 共享充电宝还有市场嘛?

热门文章

  1. JS事件对象 (event)
  2. 史上最简洁明了的,字符串拼接关于单引号和双引号的用法解析
  3. 搭建之星中文编程教学教程视频
  4. 电网调度智能防误操作系统
  5. MindManager:将excel转成思维导图
  6. mac 查看端口_交换机端口对应的mac地址与IP地址
  7. CodeForces #379(734A|734B|734C|734D|734E|734F)|二分查找|模拟|树的半径|位运算
  8. Airbnb房源信息爬取(一)——获取城市列表
  9. 一个曾经的吉他手——孔乙己
  10. CDH主机网络接口似乎未以全速运行