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

    xiaoxiao2021-03-26  25

    下载的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();     }     }
    转载请注明原文地址: https://ju.6miu.com/read-659963.html

    最新回复(0)