应用商城 下载apk 安装包解析错误 没有权限 Permission denied Android - failed to open zip archive

1.错误提示:

03-31 16:48:43.740: INFO/ActivityManager(59): Start proc com.android.packageinstaller for activity com.android.packageinstaller/.PackageInstallerActivity: pid=620 uid=10026 gids={}
03-31 16:48:44.749: WARN/zipro(620): Unable to open zip '/data/data/com.my.app/cache/myApp.apk': Permission denied
03-31 16:48:44.749: DEBUG/asset(620): failed to open Zip archive '/data/data/com.my.app/cache/myApp.apk'
03-31 16:48:44.930: WARN/PackageParser(620): Unable to read AndroidManifest.xml of /data/data/com.my.app/cache/myApp.apk
03-31 16:48:44.930: WARN/PackageParser(620): java.io.FileNotFoundException: AndroidManifest.xml

2.错误提示显示:没有权限打开 压缩文件 

Unable to open zip '/data/data/com.my.app/cache/myApp.apk': Permission denied 。

3.知识要点:

(1)做应用商城开发时 我们下载apk遇到一种情况就是 下载的apk 保存在哪里?两种情况: 一是保存在 sd卡,一是保存在机器本身的内存中。为了保证我们开发的应用商店能用,下载的apk最好保存在内存中,有可能有些机器没有sd卡(这不起怪,有些android电视机就不标配sd卡)。

(2) 应用商城多线程下载apk 的时候没有问题,下载下来的apk数据包是完整的,用 U盘拷贝出来也可以安装。但是在静默安装时候提示Permission Denied ,但是我在安装此apk之前 修改了apk的权限:

String[] command = { "chmod", "-R", "777", apkFile.getPath() };
			ProcessBuilder builder = new ProcessBuilder(command);
			try {
				builder.start();
				if (Debug.isDebug) {
					Log.d("Download", "process builder start success");
				}
				break;
			} catch (IOException e) {
				connt = connt + 1;
				if (connt >= 10) {
					break;
				} else {
					Log.e("Download", "process builder start exception");
				}
			}

问题就出现在这里,权限虽然改了,但是修改权限的函数

  <pre name="code" class="java">ProcessBuilder builder = new ProcessBuilder(command);

builder.start();


是开启一个新的进程。此时就会出现线程异步操作问题,即:修改权限的进程和安装apk 的进程是一个异步线程操作,可能在安装apk 之前 对应的apk 权限还没有修改完成,所以出现了   提示Permission Denied 错误。

4.解决办法:

    
在修改apk 的权限之后让主线程睡眠500ms 到1000ms 即可。

try {
			Thread.sleep(500);
		} catch (Exception e) {
			e.printStackTrace();
		}

完结!

   

应用商城 下载apk 安装包解析错误 没有权限 Permission denied Android - failed to open zip archive

时间: 2024-10-27 16:31:01

应用商城 下载apk 安装包解析错误 没有权限 Permission denied Android - failed to open zip archive的相关文章

微信为啥不能直接下载.apk安装包

今天遇到一个很蛋疼问题,我们的微信公众号上想放一个下载自己公司app的点击按钮,如果是苹果手机点击这个按钮就直接跳转到苹果的appstore,如果是android手机的话,就直接跳我们的服务器下载apk链接,可是一个很蛋疼的问题出现了,微信  不支持   ,所以,我们就想了一个办法,点击这个按钮,然后让其在浏览器上打开,最后这个问题就ok完美解决了,下面分享一下代码和截图: 源码下载github:https://github.com/TopGuo/weixinpop 在线演示:yipin361.

IIS允许下载APK安装包(MIME类型配置)

.apk文件就是安卓(Android)的应用程序后缀名,默认情况下,使用IIS作为Web服务器的无法下载此文件.如果需要下载此文件则需要对IIS的MIME类型进行配置. IIS6.0  MIME配置过程: 打开IIS服务管理器,找到服务器,右键-属性,打开IIS服务属性: 单击MIME类型下的"MIME类型"按钮,打开MIME类型设置窗口: 单击"新建",建立新的MIME类型: 扩展名中填写".apk".MIME类型中填写apk的MIME类型&q

前端解析ipa、apk安装包信息 —— app-info-parser

安装包只需要经过一次传输,另一次则是可以忽略不计的请求 安装 npm install app-info-parser # or yarn yarn add app-info-parser 使用 NPM引入: const AppInfoParser = require('app-info-parser') const parser = new AppInfoParser('../packages/xxx.apk') // or xxx.ipa parser.parse().then(result

Sencha学习笔记2:打包您的第一个Sencha安卓应用apk安装包

通过上一篇翻译的官方文章的介绍我们对sencha有了初步的印象,同时我们也通过该向导生成了第一个示例应用代码框架,那么下一步可能很多人都觉得应该根据该向导所提示的去看一下一个应用是如何建立起来的详细信息了,但我认为可以换一下学习的路径. 天地会珠海分舵是一个比较急功近利的人,所以有了第一个自动生成的代码示例后,他是比较急于想知道应该如何将该示例打包成一个安卓的apk安装包来安装到目标安卓机器上.刘备做得好,得陇就应该望蜀,做人还是有点追求的好. 下面我们就尝试通过一个HelloWorld的示例来

php自定义apk安装包实例

本文实例讲述了php自定义apk安装包的方法,分享给大家供大家参考.具体实现方法如下: <?php // 源文件 $apk = "gb.apk"; // 生成临时文件 $file = tempnam("tmp", "zip"); // 复制文件 if(false===file_put_contents($file, file_get_contents($apk))){ exit('copy faild!'); } // 打开临时文件 $zi

实现自定义apk安装包

需求:突然收到老大的需求,要对产品进行一次推荐好友安装的活动,每个会员下载自己的专属安装包(里面记录会员的相关信息). 思路:经过了解,发现apk安装包原来只是zip的一个马甲,使用php的ZipArchive类可以对文件进行操作. 实现代码: // 源文件 $apk = "gb.apk"; // 生成临时文件 $file = tempnam("tmp", "zip"); // 复制文件 if(false===file_put_contents(

[Android] Robotium手机自动化测试(仅需apk安装包版)——环境搭建 【转】

Robotium的手机自动化测试,很多都是利用app源代码里的Id定义来开发自动化脚本.而在我开始要为项目中的app写自动化测试脚本的时 候,开发的环境还很不稳定,app也还处于开发的状态中,而且,在需要自己搭建Android整个开发环境的时候,也遇到许多需要耗费很多时间去解决的开 发问题.因此,我觉得,在这种情况下,如果自己的自动化脚本环境能和开发完全独立,那么,应该可以更好地展开自动化脚本的开发.所以,在网上一番探索后, 选择了只需要apk安装包的方法. 当然,这样也会遇到问题,比如,在开发

微赞,你正在使用本地安装, 但未下载完整安装包, 请从微赞官网下载完整安装包后重试.

你正在使用本地安装, 但未下载完整安装包, 请从微赞官网下载完整安装包后重试. 解决方法: 路径中不能中文.

php实现在线下载程序安装包功能

在线下载程序安装包可以很方便在服务器端下载各种程序安装包(Discuz!.phpwind.Dedecms.WordPress....等一些常用程序)并存储在服务器,大大减少站长上传程序安装包时间.默认密码13712489797(请编辑本文件第2行修改) 在线下载程序安装包 更新日志:2014/11/02 重新修改了远程文件列表,文件列表不再局限于一个下拉框里;修正密码频繁验证2014/08/14 v1.1和v1.0的区别在于1.1增加了下载完成后会提示是否解压文件 2014/08/11 在线下载