首页 > 学院 > 开发设计 > 正文

解决APK下载到Cache目录安装提示“解析安装包失败”的问题

2019-11-09 19:04:35
字体:
来源:转载
供稿:网友
下载的APK在使用下面代码安装的时候提示解析安装包失败,APK本身没有问题,使用手机助手或者adb install 都可以正常安装。 /**     * 安装应用程序     */    public void installAPK(String path) {        File apkfile = new File(path);        if (!apkfile.exists())            return;        Intent intent = new Intent(Intent.ACTION_VIEW);        intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true); //表明不是未知来源        intent.setDataAndType(Uri.parse("file://" + apkfile.toString()),                "application/vnd.android.package-archive");        ((Activity)context).startActivityForResult(intent, 0);    }截取的Log如下从日志里可以看出来是PermissonDenied,failed to open, Unable to read。测试后发现文件存储在程序Cache目录下才会出现这个问题,存储在SD卡并不报错,所以在installApk方法中加一个chmod方法更改文件的访问权限问题解决! /**     * 安装应用程序     */    public void installAPK(String path) {        File apkfile = new File(path);        if (!apkfile.exists())            return;        chmod("777", path); //更改文件权限        Intent intent = new Intent(Intent.ACTION_VIEW);        intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true); //表明不是未知来源        intent.setDataAndType(Uri.parse("file://" + apkfile.toString()),                "application/vnd.android.package-archive");        ((Activity)context).startActivityForResult(intent, 0);    }/**    * 获取权限    *     * @param permission    *            权限    * @param path    *            路径    */    public  void chmod(String permission, String path) {    try {    String command = "chmod " + permission + " " + path;    Runtime runtime = Runtime.getRuntime();    runtime.exec(command);    } catch (IOException e) {    e.PRintStackTrace();    }    }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表