Android4.1.1下关于采用File.createTempFile创建的临时文件存放路径问题
android客户端软件版本更新过程中,android4.1.1系统下待新版客户端软件下载准备安装时,出现了“解析程序包出现问题”的错误。
稍后尝试了android1.6和android2.3.x系统下进行软件版本更新,均无任何问题。
接下来查看了android4.1.1在进行新版客户端软件安装时出现的warning日志:
?:??: W/?(?): Unable to open zip '/data/data/com.xxx.android/cache/xxxAndroid1941014286.apk': Permission denied
?:??: W/?(?): Parse error when parsing manifest. Discontinuing installation
?:??: W/?(?): Unable to read AndroidManifest.xml of /data/data/com.xxt.android/cache/xxxAndroid1941014286.apk
进入到/data/data/com.xxx.android/cache/目录下,确实有这个xxxAndroid1941014286.apk文件,而这个文件的所有者属于 com.xxx.android应用的创建者,该文件仅仅对于所有者开放了rw(即读写)权限,那么同用户组及其他用户组的用户也就没有访问该文件的权限,当我们把安装应用程序的意图传递给android系统提供的activity,而这个activity尚没有访问该文件的权限,也就无法安装了,所以出现了“ Permission denied ”的问题。。
之所以出现这个问题,是因为下载新版本的客户端安装文件时,采用File.createTempFile的方法,将下载下来的安装文件当做临时文件写入到手机上。。
而在android1.6和android2.3.x系统下,用File.createTempFile这种方式创建的临时文件会存放到sd卡上;在android 4.1.1系统下,则会将临时文件存放到/data/data/应用包名/cache目录下,而这个目录仅对应用的创建者有读写权限。。
更多相关文章
- Android应用开发提高系列——Android动态加载(下)——加载已安装AP
- VS2013开发Android(安卓)App 环境搭建
- Android:StatFs类 获取系统/sdcard存储空间信息
- android—AOSP、AOKP、CM的区别
- Android(安卓)studio 3.0安装配置方法图文教程
- Android(安卓)Studio下载及安装3.0版本
- 【源代码】基于Android和蓝牙的单片机温度採集系统
- adb shell 查看系统属性(用来判断特殊的操作系统)
- Android(安卓)个推 Clientid,PushManagerReceiver