Android:从assets资源目录下安装apk
来源:互联网 发布:java导出excel的方法 编辑:程序博客网 时间:2024/05/21 17:57
原文链接:http://blog.csdn.net/annkie/article/details/8150807
为了实现将第三方apk内置在assets资源目录下,再进行安装的目的。
首先将需要安装的apk复制到assets目录下,后缀名改为.mp3或其他免压缩的格式。
测试代码如下:
- public class MainActivity extends Activity
- {
- private static final String TAG = "ExtractIconFromApk";
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- AssetManager assets = getAssets();
- try
- {
- //获取assets资源目录下的himarket.mp3,实际上是himarket.apk,为了避免被编译压缩,修改后缀名。
- InputStream stream = assets.open("himarket.mp3");
- if(stream==null)
- {
- Log.v(TAG,"no file");
- return;
- }
- String folder = "/mnt/sdcard/sm/";
- File f=new File(folder);
- if(!f.exists())
- {
- f.mkdir();
- }
- String apkPath = "/mnt/sdcard/sm/test.apk";
- File file = new File(apkPath);
- //创建apk文件
- file.createNewFile();
- //将资源中的文件重写到sdcard中
- //<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- writeStreamToFile(stream, file);
- //安装apk
- //<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
- installApk(apkPath);
- }
- catch (IOException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- private void writeStreamToFile(InputStream stream, File file)
- {
- try
- {
- //
- OutputStream output = null;
- try
- {
- output = new FileOutputStream(file);
- }
- catch (FileNotFoundException e1)
- {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- try
- {
- try
- {
- final byte[] buffer = new byte[1024];
- int read;
- while ((read = stream.read(buffer)) != -1)
- output.write(buffer, 0, read);
- output.flush();
- }
- finally
- {
- output.close();
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- finally
- {
- try
- {
- stream.close();
- }
- catch (IOException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- private void installApk(String apkPath)
- {
- Log.v(TAG,apkPath);
- Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.setDataAndType(Uri.fromFile(new File(apkPath)),
- "application/vnd.android.package-archive");
- startActivity(intent);
- }
0 0
- Android:从assets资源目录下安装apk
- Android:从assets资源目录下安装apk
- Android 安装assets目录下的其他apk
- assets目录下apk的安装
- [Android] Android assets目录下资源使用
- android应用Assets目录下的资源
- Android读取assets目录下的资源
- Android读取assets目录下的资源
- Android读取assets目录下的资源
- Android读取assets目录下的资源
- Android读取assets目录下的资源
- android--assets目录下资源使用总结
- Android读取assets目录下的资源
- Android读取assets目录下的资源
- Android之assets目录下资源使用
- android assets目录下的资源读取
- android 从assets目录复制文件到apk私有目录
- android 安装assets下的apk
- [Linux学习笔记]系统分区知识点归纳
- iOS使用xib文件创建一个组件为子控件,进行复用
- 嵌入式 字符设备驱动经典示例
- 如何制作 iOS ipa - Ad-Hoc
- word2vec 中的数学原理详解(三)背景知识
- Android:从assets资源目录下安装apk
- convmv 解决GBK 迁移到 UTF-8 ,中文 文件名乱码
- Android入门笔记 - 数据存储 - SharedPreferences
- 紫外线消毒器:飞利浦紫外线杀菌灯TUV55W
- python学习笔记(一)
- android实现增量更新
- vs2013 asp.net 水晶报表插件下载
- Step By Step(Lua-C API简介)
- Android 修改TextView中部分字体的颜色及大小