升级时碰见的异常

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();
            ){
                installReturnCode=;
            }else{
                ){
                    installReturnCode=returnCode;
                }else{
                    installReturnCode=-;
                }
            }
            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"

Android使用静默安装时碰见的问题的更多相关文章

  1. Android实现静默安装与卸载

    一般情况下,Android系统安装apk会出现一个安装界面,用户可以点击确定或者取消来进行apk的安装. 但在实际的项目需求中,有一种需求,就是希望apk在后台安装(不出现安装界面的提示),这种安装方 ...

  2. Android对于静默安装和卸载

    在一般情况下,Android系统安装apk会有一个安装界面,用户可以单击确定或取消apk设备. 但在实际的项目需求中,有一种需求.就是希望apk在后台安装(不出现安装界面的提示),这样的安装方式称为静 ...

  3. android apk静默安装

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/47803149 之前有很多朋友都问过我,在Android系统中怎样才能实现静默安装呢 ...

  4. android 实现静默安装、卸载

    方法1:[使用调用接口方法,由于安装卸载应用程序的部分API是隐藏的,所以必须下载Android系统源码,在源码下开发并编译之后使用MM命令编译生成APK文件] import java.io.File ...

  5. Android随笔之——静默安装、卸载

    随笔之所以叫随笔,就是太随意了,说起来,之前的闹钟系列随笔还没写完,争取在十月结束之前找时间把它给写了吧.今天要讲的Android APK的静默安装.卸载.网上关于静默卸载的教程有很多,更有说要调用隐 ...

  6. Android 静默安装/后台安装

    Android实现静默安装其实很简单,今天在网上找资料找半天都说的很复杂,什么需要系统安装权限.调用系统隐藏的api.需要系统环境下编译.需要跟systemUI同进程什么的.我不知道他们真的实现了静默 ...

  7. 非ROOT实现静默安装的一些思考与体会,AIDL获取IPackageManager,反射ServiceManager,系统签名

    非ROOT实现静默安装的一些思考与体会,AIDL获取IPackageManager,反射ServiceManager,系统签名 最近自家的系统要做一个升级服务,里面有三个功能,第一个是系统升级,也就是 ...

  8. 让Android程序获得系统的权限,实现关机重启,静默安装等功能

    引用:http://www.cnblogs.com/welenwho/archive/2012/05/10/2494984.html android想要获得系统权限有几种途径,一种就是你的程序固化的系 ...

  9. Android静默安装实现方案

    之前有很多朋友都问过我,在Android系统中怎样才能实现静默安装呢?所谓的静默安装,就是不用弹出系统的安装界面,在不影响用户任何操作的情况下不知不觉地将程序装好.虽说这种方式看上去不打搅用户,但是却 ...

随机推荐

  1. 移动端webUI框架(HTML5手机框架)

    淘宝SUI Mobile框架 官网地址:http://m.sui.taobao.org/ SUI Mobile 是一套基于 Framework7 开发的UI库.它非常轻量.精美,只需要引入我们的CDN ...

  2. java 启动 shell脚本

    run.sh p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "PingFang SC"; color: #000000 ...

  3. iOS单个应用程序的最大可用内存是多少?

    iOS单个应用程序的最大可用内存是多少?   StackOverflow上有人做了一些简单的测试,有限设备下迄今为止测到的结果: iPad1: 127MB/256MB/49% (大致crash临界值 ...

  4. android 开发之 百度地图的使用

    好久没写博客了,最近遇到个新需求 需要用到百度地图的基础地图,定位,理论上应该还会用到鹰眼的功能吧.具体还很难说.我现在 刚动工,就从头开始记录吧. 首先是先申请一个百度地图api的key 流程官网很 ...

  5. TSPL学习笔记(4):数组相关练习

    最近研究函数式编程,都是haskell和scheme交互着看的,所以笔记中两种语言的内容都有,练习一般也都用两种语言分别实现. 本篇练习一些数组有关的问题,之所以与数组相关是因为在命令式编程中以下问题 ...

  6. cornerstone 使用

    svn 使用方法 Check Out 下载的文件会与源文件产生一个working copy与源文件关联

  7. Cookie存储中文报错:java.lang.IllegalArgumentException: Control character in cookie value or attribute.(转)

    项目中做自动登录和保存密码时,Cookie报错Java.lang.IllegalArgumentException,上google查了下 在http://hi.baidu.com/xtxycy/blo ...

  8. backbone.Collection源码笔记

    Backbone.Collection backbone的Collection(集合),用来存储多个model,并且可以多这些model进行数组一样的操作,比如添加,修改,删除,排序,插入,根据索引取 ...

  9. 2016 Multi-University Training Contest 1 Chess 组合游戏+状压(预处理)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5724 题意:一个n*20的棋盘,n <= 1000;棋盘上有一些棋子,每颗棋子只能移动到右边的第一个 ...

  10. iOS NSNumber语法糖

    BOOL equal; NSNumber * num1 = [NSNumber numberWithInteger:]; NSNumber * num2 = @; equal = [num1 isEq ...