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/?(?):Parseerrorwhenparsingmanifest.Discontinuinginstallation

?:??:W/?(?):UnabletoreadAndroidManifest.xmlof/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目录下,而这个目录仅对应用的创建者有读写权限。。

相关推荐