博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android使用静默安装时碰见的问题
阅读量:7054 次
发布时间:2019-06-28

本文共 2849 字,大约阅读时间需要 9 分钟。

升级时碰见的异常

private void installPackage(String appName,final File apk) {        if (!apk.exists()) {            setHasNewVersion(appName,false);            hideProgressDialog();            return;        }        apk.setReadable(true, false);        apk.setExecutable(true, false);                //走完installPackage之后就结束了,回调observer内的代码是异步执行了        final PackageManager pm = getPackageManager();        PackageInstallObserver observer = new PackageInstallObserver(appName);        Log.i(TAG, "install the apk begin : "+appName+";;getAbsolutePath="+apk.getAbsolutePath());        pm.installPackage(                Uri.parse("file://" + apk.getAbsolutePath()), observer,                PackageManager.INSTALL_REPLACE_EXISTING, null);    }
private class PackageInstallObserver extends IPackageInstallObserver.Stub {        private String appname;        public PackageInstallObserver(String appName) {            appname=appName;        }                public void packageInstalled(final String packageName, int returnCode) {            setHasNewVersion(appname,false);            String appPath = getFilesDir().getAbsolutePath()+"/apps/"+appname+".apk";            File apk = new File(getFilesDir(), appname+".apk");                        Log.i(TAG, "install is end and delete "+apk.getAbsoluteFile());            apk.delete();            hideProgressDialog();            if(returnCode==1){                installReturnCode=3;            }else{                if(returnCode<0){                    installReturnCode=returnCode;                }else{                    installReturnCode=-123455;                }            }            Log.i(TAG, "installReturnCode "+installReturnCode+"; packageName = "+packageName);            new Thread(){                public void run() {                    postUpdateResult(packageName,appname,installReturnCode);//安装成功                };            }.start();        }    }

异常

W/asset ( 1245): Asset path /data/data/com.****.******/files/apps/pjlauncher.apk is neither a directory nor file (type=0).

W/DefContainer( 1245): Failed to parse package
W/ActivityManager( 535): No content provider found for permission revoke: file:///data/data/com.****.***/files/apps/*****.apk
D/dalvikvm( 535): GC_EXPLICIT freed 573K, 24% free 4589K/6028K, paused 2ms+3ms, total 35ms

I/AppUpgradeService( 1227): install is end and delete /data/data/com.****.******/files/apps/*****.apk

 

 

查了好半天有说是要添加权限的,有说是要在使用时给apk修改权限的,试了半天都没有效果。

最后修改了apk文件的下载存放路径,结果安装成功。

* 如果apk下载到这个目录/data/data/com.****.******/files/apps

* 会出现No content provider found for permission这个异常
* 如果是这个目录/data/data/com.****.******/files
* 则没有问题

 

感觉很奇怪我在其他机顶盒上测试的时候,即使是在/data/data/com.****.******/files/apps这个目录也可以顺利安装apk,但是换了一台机顶盒之后就不可以了

可能是不同机顶盒系统有差异吧!

 

ps:这个功能需要进行系统签名,以及配置android:sharedUserId="android.uid.system"

 

转载于:https://www.cnblogs.com/lipeineng/p/6237681.html

你可能感兴趣的文章
几种数据库建模工具推荐(包含开源版)
查看>>
大中型网站集群架构企业级高标准全自动实战项目征集
查看>>
7.5 TableLayout布局详解
查看>>
【虚拟化实战】存储设计之二LUN Sizing
查看>>
SCCM2012系列之八,SCCM2012客户机发现
查看>>
禁用和删除Exchange邮箱深入探讨
查看>>
QQ群排名自动吸粉,同样是玩群,为什么他们这么牛?
查看>>
nagios监控web/mysql多角度实战分享(三)
查看>>
互联网公司的项目经理:别轻易脚踩两只船
查看>>
《统一沟通-微软-实战》-7-配置-4-未分配号码的通知
查看>>
【DevOps】从理念到实施
查看>>
MySQL数据库CPU飙升紧急处理方法
查看>>
cocos2d-x一些核心概念介绍
查看>>
SCCM2012 R2实战系列之五:发现方法
查看>>
Windows10-AzureAD的支持,云的落地
查看>>
手把手教你使用ECharts绘制可视化图表
查看>>
Tomcat端口被占用解决方法(不用重启)
查看>>
使用 TS Web Access 在网站上访问该程序的链接
查看>>
什么是你的核心竞争力之五—变化与坚持
查看>>
一个存储交流的报告——闪存存储系统设计
查看>>