本来来源于为了得分回答别人的问题,不详细思考,不验证,就把百度的答案贴上去,所以在此,先道歉http://bbs.csdn.net/topics/390432635。
留有问题,当没有SD卡又不知道内部存储路径时,这时候我本打算将APK 存到
/data/data/<packagename>/files/xxx.apk 该位置,然后安装,然后删除。但是出现问题,出现解析错误,我试过chmod 777 来给予权限了依然有问题。等待解答。
那下载安装,下载路径有是怎么一种情况,又是如何安装的呢?有待于学习。
运行该示例代码的可能出现问题,就在文件名和路径名那里。如果有问题,请更改这两处。
本文中的所有代码都经过本人验证。
从整体上看,一般的对于assets 里面的apk进行安装的操作是先将 apk 复制到sd上 或者其他的可读取存储位置。比如我拿到的机子 有两个路径
/mnt/emmc/ 手机的内部存储位置(其他的手机不一定有)
/mnt/sdcard/ 手机的sd存储位置
复制到这两个路径都OK。
首先要获取assets目录下文件的数据流,用于写到存储位置上。
//这里的fileName 这个是assets文件下的全文件名 包括后缀名。
path 是存储的路径位置,绝对路径。
InputStream is = context.getAssets().open(fileName);
File file = new File(path);
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
byte[] temp = new byte[1024];
int i = 0;
while ((i = is.read(temp)) > 0) {
fos.write(temp, 0, i);
}
fos.close();
is.close();
通过Context 获取到AssetManager
abstract AssetManager | getAssets()
Return an AssetManager instance for your application's package.
|